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
9
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 kluczowymWITH
.
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
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