Relacyjne systemy zarządzania bazami danych oparte na SQL tylko częściowo nadają się do zapytań hierarchicznych lub rekurencyjnych. Inne systemy, takie jak ArangoDB, lepiej się do tego nadają (była o tym ciekawa dyskusja na konferencji GOTO 2016 ). Możliwe jest jednak również tworzenie zapytań rekurencyjnych w SQL z użyciem wyrażeń Common Table Expressions , co pozwala na przykład na wykonywanie zapytań do klasycznych tabel nadrzędnych i 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