假设我有一个具有以下结构的表:
=================
| Id | ParentId |
=================
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 3 |
| 7 | 3 |
-----------------
这导致像这样的树:
1
/ \
2 3
/ \ / \
4 5 6 7
给定一个id,我如何获得所有叶节点?因此,如果给定的id为2,则返回值应为4& 5.给定的id永远不会是叶子节点本身.
我不知道如何在这里修改SQL:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
SELECT t1.name FROM
category AS t1 LEFT JOIN category as t2
ON t1.category_id = t2.parent
WHERE t2.category_id IS NULL;
EDIT1:另外,如何获取给定id的root id?因此,如果给定的id为2,则返回值应为1.
最佳答案
“Also, how do I get the root id for a given id? So, if the given id is 2, the return should be 1.”
这很简单,那就是ParentId!
您将通过以下查询获取子项:
SELECT child.Id FROM theTable current LEFT JOIN theTable child ON child.ParentId = current.Id;
顺便说一下,当行没有父级时,我不建议使用0,在这种情况下我宁愿使用NULL.