私は木の表現である以下のような表があります。MySQLのケースステートメントの問題
id --- parentid
1 NULL
2 1
3 1
4 2
ここで、1はルートノードであり、4,3はリーフノードであり、2は中間ノードである。
SELECT mytable.id, IF(mytable.parent_id IS NULL, 'root',
IF(COUNT(children.id) > 0, 'intermediate', 'leaf'))
FROM mytable
LEFT JOIN mytable AS children ON children.parent_id = mytable.id
GROUP BY mytable.id;
「ルート」はparent_id
がNULL
されている行である:ここでは
id ---- type
1 root
2 intermiditae
3 leaf
4 leaf
私はへのルートのための 'のid = 1のParentID = 1 'を追加しますデータ。クエリは、3つのケース(ルート、interm、リーフ)に対して3つのselectの和集合で動作する必要があります: 'select id、 'id = parentid union select ...'のデータから' root 'これに取り組み、あなたの質問を取り戻してください。 – PeterMmm
ええ、ごめんなさい、私は編集します – Vinny