Query - L'intera struttura ad albero :
SELECT *
FROM Employee
START WITH ParentID IS NULL
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
Query - I figli di un determinato dipendente :
Non hai bisogno di una query gerarchica per questo.
(Il genitore è dato dalla variabile bind :parent_id
)
SELECT *
FROM Employee
WHERE ParentID = :parent_id
ORDER BY LastName, FirstName, ID;
Query - I discendenti di un determinato dipendente :
La stessa query dell'intero albero ma con un punto di inizio diverso
(Il genitore è dato dalla variabile bind :parent_id
)
SELECT *
FROM Employee
START WITH ParentID = :parent_id
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
Query - Il dipendente e i suoi antenati :
Simile alla query precedente ma con CONNECT BY
invertito e non sarà necessario ordinare i fratelli poiché ci sarà un solo manager immediato per dipendente.
(Il dipendente è dato dalla variabile bind :employee_id
)
SELECT *
FROM Employee
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;
Query - Il manager del dipendente :
Identico alla query precedente ma con un filtro LEVEL = 2
per ottenere solo la riga principale immediata.
(L'impiegato è dato dalla variabile bind :employee_id
)
SELECT e.*
FROM Employee e
WHERE LEVEL = 2
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;