Замена рекурсивного запроса MySQL в PHP

Поскольку похоже, что рекурсивные запросы невозможны в MySQL, мне интересно, есть ли решение для получения той же информации, которая также ограничивает количество запросов, которые я делаю к базе данных. В моем случае у меня есть то, что составляет дерево, и, учитывая узел, я прокладываю путь обратно к корню и сохраняю имена узлов по мере продвижения. Дана такая таблица:

 id | parent
-------------
 1  |   
 2  |   1
 3  |   1
 4  |   2
 5  |   2
 6  |   5

Я хочу выбрать все идентификаторы на пути от 6 до 1 (6,5,2,1). Поскольку общая длина пути неизвестна, я бы предположил, что единственный способ сделать это — взять результаты одного запроса и построить новый запрос, пока я не вернусь в корень. С другой стороны, прошло уже пару лет с тех пор, как я в последний раз использовал MySQL, поэтому меня не удивит, если я немного оторвусь. Любая помощь будет оценена по достоинству.


person phill    schedule 22.03.2011    source источник


Ответы (1)


Поскольку похоже, что рекурсивные запросы невозможны в MySQL

mySQL не поддерживает оператор CONNECT BY, правда, но вы можете реализовывать рекурсивные процедуры/функции с помощью mysql и возвращать из них наборы результатов.

person symcbean    schedule 23.03.2011