У меня есть таблица спецификаций, которая настраивается следующим образом:
item - parent
Конечным результатом при отображении спецификации материалов является то, что оно отображается следующим образом:
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 строк, но я вытащил 10 000 записей. Результат рекурсивной функции будет просто создавать дерево, подобное этому:
item 1
item 2
item 3
item 4
item 76
item 46
item 25
Все, что я знаю, это то, что я начинаю с пункта 1. Пункт 5 может иметь родителя из 11; им не нужно идти последовательно. Я хочу получить все дочерние ветки в дереве. Как я могу выполнить этот запрос в mysql?