Использование MySQL-запроса для обхода строк для создания рекурсивного дерева
У меня есть таблица с перечнем материалов, которая настроена так:
пункт - родитель
Конечный результат при отображении перечня материалов заключается в том, что он отображается следующим образом:
item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
Окончательный результат также может быть многоуровневым:
item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
И это может продолжаться до бесконечности:
item 76 - parent 0
item 46 - parent 76
item 46 - parent 0
item 25 - parent 46
Прямо сейчас я просто получаю 1 уровень из базы данных:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
Или извлеките каждую строку из таблицы и используйте мою рекурсивную функцию, чтобы отсортировать только те, которые мне нужны, но это, очевидно, неэффективно, поскольку мне может понадобиться только 10 строк, но я извлекаю 10000 записей. Вывод рекурсивной функции просто создаст дерево вроде этого:
item 1
item 2
item 3
item 4
item 76
item 46
item 25
Все, что я знаю, это то, что я начинаю с пункта 1. У пункта 5 может быть родитель 11; они не должны идти последовательно. Я хочу получить все дочерние ветви на дереве. Как я мог сделать этот запрос в MySQL?