rekurencyjne zapytanie własne

Mam następującą tabelę:

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

Chciałbym odzyskać wszystkie wiersze, dopóki nie będzie już parentID. Więc ".... Gdzie id=5 " dałoby mi:

5, 4, 2, 1
Author: iddqd, 2010-07-18

1 answers

Organizujesz swoje hierarchiczne dane za pomocą Modelu listy adiacenckiej . Fakt, że takie operacje rekurencyjne są trudne, jest w rzeczywistości jedną z głównych wad tego modelu.

SQL Server 2005, Postgres 8.4 i Oracle 11g, obsługują rekurencyjne zapytania przy użyciu common table expressions ze słowem kluczowym WITH.

Jeśli chodzi o MySQL, być może zainteresuje cię poniższy artykuł opisujący alternatywny model (zagnieżdżony Model set ), który ułatwia operacje rekurencyjne (możliwe):

Ponadto proponuję również zapoznać się z prezentacją Billa Karwina wskazaną w komentarzach powyżej. Opisany model tabeli zamknięcia jest bardzo ważną alternatywą dla zagnieżdżonego zestawu.

 9
Author: Daniel Vassallo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-18 19:00:29