рекурсивный сам запрос

У меня есть следующая таблица:

myTable:
+----+----------+
| id | parentID |
+----+----------+
|  1 |     null |
|  2 |        1 |
|  3 |        1 |
|  4 |        2 |
|  5 |        4 |
-----------------

я хотел бы вернуть все строки, прослеживающие, пока нет не порождено больше. Так ".... ГДЕ id=5" дал бы мне:

5, 4, 2, 1
9
задан iddqd 18 July 2010 в 15:36
поделиться

1 ответ

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

Некоторые СУБД, такие как SQL Server 2005, Postgres 8.4 и Oracle 11g, поддерживают рекурсивные запросы с использованием общих табличных выражений с ключевым словом WITH .

Что касается MySQL, вам может быть интересно прочитать следующую статью, в которой описывается альтернативная модель (модель вложенных множеств ), которая упрощает (возможно) рекурсивные операции:

Кроме того, я также предлагаю ознакомиться с презентацией Билла Карвина , указанной в комментариях выше. Описанная модель закрывающей таблицы является очень действенной альтернативой вложенному набору.

9
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: