ВЫБЕРИТЕ сколь угодно глубокое дерево, которое представлено моделью списка смежности в mysql? - PullRequest
1 голос
/ 10 июня 2010

В mysql у меня есть дерево, которое представлено с использованием модели списка смежности.

MYTREE
   id
   parent_id
   title

Мне интересно:

Учитывая идентификатор узла, есть ли способ ВЫБРАТЬ все дерево под этим узлом, дополненное информацией о глубине? Дерево сколь угодно глубокое, поэтому я не могу сказать, сколько уровней может быть. Но результат может выглядеть примерно так:

ID      TITLE     DEPTH
4       title1    1
8       title2    2
16      title8    3
9       title3    2
15      title4    3

Я знаю, что это можно сделать, используя модель вложенных множеств. Но в вложенных множествах есть вещи, которые не идеальны, и я надеюсь, что не придется переключаться.

Спасибо за совет!

Ответы [ 2 ]

0 голосов
/ 10 июня 2010

РЕДАКТИРОВАТЬ: Я не заметил произвольно глубокое предложение в заголовке:

Вы можете написать хранимую процедуру для повторения по строкам.

Но что не является идеальным во вложенных наборах (по крайней мере, об этом не может позаботиться триггер до вставки или хранимая процедура)?

0 голосов
/ 10 июня 2010

Краткий ответ: нет.

Единственный способ обойти дерево, представленное родительскими указателями, - это следовать одному набору родительских идентификаторов после следующего.Это возможно, если вы можете ограничить глубину, просто объединяя это много раз по всей таблице, но с неограниченной глубиной, как правило, можно использовать цикл на стороне приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...