Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Consulta recursiva no Oracle


No Oracle isso é feito 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;

Isso percorre a árvore de cima para baixo.

Se você quiser percorrer a árvore de uma única mensagem até a raiz, altere o start with e o connect by papel:
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