Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Rekursive Abfrage in Oracle

In Oracle geht das ganz einfach mit 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;

Dadurch wird der Baum von oben nach unten durchlaufen.

Wenn Sie den Baum von einer einzelnen Nachricht bis zur Wurzel durchlaufen möchten, ändern Sie den start with und den connect by Teil:

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