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

Estrutura de árvore em sql no Oracle.How to show tree, child nodes e parent nodes in SQL Oracle


Consulta - Toda a estrutura da árvore :
SELECT *
FROM   Employee
START WITH ParentID IS NULL
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;

Consulta - Os filhos de um determinado funcionário :

Você não precisa de uma consulta hierárquica para isso.
(O pai é fornecido pela variável de ligação :parent_id )
SELECT *
FROM   Employee
WHERE  ParentID = :parent_id
ORDER BY LastName, FirstName, ID;

Consulta - Os descendentes de um determinado funcionário :

A mesma consulta para a árvore inteira, mas com um ponto inicial diferente
(O pai é fornecido pela variável de ligação :parent_id )
SELECT *
FROM   Employee
START WITH ParentID = :parent_id
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;

Consulta - O funcionário e seus ancestrais :

Semelhante à consulta anterior, mas com o CONNECT BY revertida e você não precisará ordenar os irmãos, pois haverá apenas um gerente imediato por funcionário.
(O funcionário é dado pela variável de vinculação :employee_id )
SELECT *
FROM   Employee
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;

Consulta - O gerente do funcionário :

Idêntico à consulta anterior, mas com um filtro LEVEL = 2 para obter apenas a linha pai imediata.
(O funcionário é fornecido pela variável de ligação :employee_id )
SELECT e.*
FROM   Employee e
WHERE  LEVEL = 2
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;