Systemy zarządzania relacyjnymi bazami danych oparte na języku SQL są tylko warunkowo odpowiednie dla zapytań hierarchicznych lub rekurencyjnych. Inne systemy, takie jak ArangoDB, są tutaj lepsze (była o tym świetna rozmowa na GOTO 2016 ). Możesz również generować zapytania rekurencyjne w języku SQL za pomocą typowych wyrażeń tabelowych, a tym samym wykonywać zapytania w klasycznych tabelach nadrzędnych / podrzędnych dla wszystkich przodków i potomków.
Na przykład w PostgreSQL wygląda to tak:
0672c4761d202a35a9059fa137ace7c3
Jeśli chcesz uzyskać wszystkie elementy podrzędne określonego elementu item_id, użyj wspólnych wyrażeń tabelowych:
0672c4761d202a35a9059fa137ace7c3
Zapytanie rodziców również nie stanowi problemu:
0672c4761d202a35a9059fa137ace7c3