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;