Oracle
 sql >> Base de données >  >> RDS >> Oracle

Requête récursive dans Oracle

Dans Oracle, cela se fait facilement en utilisant CONNECT BY

select message_id, parent_id, message_content
from messages
start with message_id = 97 -- this is the root of your conversation
connect by prior message_id = parent_id;

Cela parcourt l'arbre de haut en bas.

Si vous souhaitez parcourir l'arborescence d'un seul message à la racine, modifiez le start with et le connect by partie :

select message_id, parent_id, message_content
from messages
start with message_id = 100 -- this is the root of your conversation
connect by prior parent_id = message_id; -- this now goes "up" in the tree