1

次のテーブルがあるとします:items(item_id、item_parent)...そしてitem_parentがitem_idを参照するので、それは自己参照テーブルです。

どのMySQLがサポートするSQLクエリを使用して、テーブル内の各アイテムを、そのアイテムが親であるか、またはそれを参照する他のアイテムがあるかどうかを示すブール値とともにSELECTしますか?

表に次のデータがある場合:

item_id     item_parent
----------- -----------
1           0          
2           0            
3           2          
4           2          
5           3          

...クエリは、次のオブジェクトのセットを取得できる必要があります。

{"item_id":1、 "is_parent":0}
{"item_id":2、 "is_parent":1}
{"item_id":3、 "is_parent":1}
{"item_id":4、 "is_parent": 0}
{"item_id":5、 "is_parent":0}

4

2 に答える 2

2
SELECT  i.item_id,
        item_id IN
        (
        SELECT  item_parent
        FROM    items
        )
FROM    items i
于 2010-02-05T16:45:23.690 に答える
2

これにより、すべてのアイテムと、それぞれに含まれる子の数を指定する整数が返されます。

SELECT T1.item_id, COUNT(T2.item_parent) AS is_parent
FROM items AS T1
LEFT JOIN items AS T2
ON T1.item_id = T2.item_parent
GROUP BY item_id

ブール値(0または1)が必要な場合は、次のように変更します。

SELECT T1.item_id, COUNT(T2.item_parent) > 0 AS is_parent
FROM items AS T1
LEFT JOIN items AS T2
ON T1.item_id = T2.item_parent
GROUP BY item_id
于 2010-02-05T16:47:01.917 に答える