Oracle
 sql >> Database >  >> RDS >> Oracle

Query ricorsiva in Oracle

In Oracle questo può essere fatto facilmente usando 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;

Questo cammina l'albero dall'alto verso il basso.

Se vuoi percorrere l'albero da un singolo messaggio alla radice, cambia il start with e il connect by parte:

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