Récursivité en SQL

Les systèmes de gestion de bases de données relationnelles basés sur SQL ne sont que partiellement adaptés aux requêtes hiérarchiques ou récursives. D'autres systèmes, comme ArangoDB, sont plus performants dans ce domaine (une excellente présentation à ce sujet a eu lieu lors de la conférence GOTO 2016 ). Il est toutefois possible de créer des requêtes récursives en SQL à l'aide des expressions de table communes (CTE) , ce qui permet, par exemple, d'interroger des tables parent/enfant classiques pour obtenir tous leurs ancêtres et descendants.


Dans PostgreSQL, cela ressemble à ceci, par exemple:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Si vous souhaitez obtenir tous les enfants d'un certain item_id, vous utilisez les expressions de table communes:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Interroger les parents n'est pas non plus un problème:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Retour