Relationele databasesystemen gebaseerd op SQL zijn slechts gedeeltelijk geschikt voor hiërarchische of recursieve query's. Andere systemen, zoals ArangoDB, zijn hier beter geschikt voor (hierover werd een uitstekende presentatie gegeven op GOTO 2016 ). Het is echter ook mogelijk om recursieve query's in SQL te maken met behulp van Common Table Expressions ( CTE's), waardoor je bijvoorbeeld klassieke ouder/kind-tabellen kunt bevragen voor alle voorouders en afstammelingen.
In PostgreSQL ziet het er bijvoorbeeld zo uit:
0672c4761d202a35a9059fa137ace7c3
Als je alle onderliggende items van een bepaalde item_id wilt hebben, gebruik je de Common Table Expressions:
0672c4761d202a35a9059fa137ace7c3
Ook navragen bij de ouders is geen probleem:
0672c4761d202a35a9059fa137ace7c3