MySQL не поддерживает рекурсивные запросы, такие как тот, который вам нужен.
Некоторое время назад я написал «Хранимые процедуры», которые обеспечивают модель для этого.
Вместо того, чтобы изобретать велосипед, я дам вам ссылки на мои прошлые сообщения на эту тему:
Короче говоря, хранимые процедуры, которые я сделал, выполняют предварительный порядок обхода дерева с использованием обработки очереди.
GetParentIDByID
GetAncestry
GetFamilyTree
Родитель всем детям (например, хранимая процедура GetFamilyTree)
- STEP01) Начните с
parent_id
очереди
- STEP02) вывести следующий из очереди
parent_id
как текущий
- ШАГ03) Поставить в очередь все
id
значения, которые имеют текущийparent_id
- STEP04) Распечатать или собрать комментарий
- STEP05) Если очередь не пуста, перейдите
STEP02
- Шаг 06) Вы сделали !!!
Родитель для всех родителей (как хранимая процедура GetAncestry)
- STEP01) Начните с
id
очереди
- STEP02) вывести следующий из очереди
id
как текущий
- ШАГ03) Поставить
parent_id
значение текущегоid
- STEP04) Распечатать или собрать комментарий
- STEP05) Если очередь не пуста, перейдите
STEP02
- Шаг 06) Вы сделали !!!
Пожалуйста, просмотрите Хранимые процедуры в моих других постах, чтобы увидеть реализацию.
Попробуйте!