Recursie in SQL

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/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Als je alle onderliggende items van een bepaalde item_id wilt hebben, gebruik je de Common Table Expressions:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Ook navragen bij de ouders is geen probleem:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Terug