Предположим, у меня есть таблица, которая имеет следующую структуру:
=================
| Id | ParentId |
=================
| 1 | 0 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 3 |
| 7 | 3 |
-----------------
Это приводит к такому дереву:
1
/ \
2 3
/ \ / \
4 5 6 7
Учитывая идентификатор, как мне получить все листовые узлы? Таким образом, если заданный идентификатор равен 2, возвращаемое значение должно быть 4 и 5. Указанный идентификатор никогда не будет самим листовым узлом.
Я не уверен, как изменить 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;
РЕДАКТИРОВАТЬ1: Кроме того, как мне получить корневой идентификатор для данного идентификатора? Итак, если заданный идентификатор равен 2, возвращаемое значение должно быть 1.