Zapytanie – cała struktura drzewa :
SELECT *
FROM Employee
START WITH ParentID IS NULL
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
Zapytanie – dzieci danego pracownika :
Nie potrzebujesz do tego hierarchicznego zapytania.
(Nadrzędny jest określony przez zmienną wiązania :parent_id
)
SELECT *
FROM Employee
WHERE ParentID = :parent_id
ORDER BY LastName, FirstName, ID;
Zapytanie — potomkowie danego pracownika :
To samo zapytanie co dla całego drzewa, ale z innym punktem początkowym
(Rodzic jest określony przez zmienną wiązania :parent_id
)
SELECT *
FROM Employee
START WITH ParentID = :parent_id
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
Zapytanie – Pracownik i jego przodkowie :
Podobne do poprzedniego zapytania, ale z CONNECT BY
odwrócone i nie musisz zamawiać rodzeństwa, ponieważ na pracownika przypada tylko jeden bezpośredni kierownik.
(Pracownik jest określony przez zmienną powiązania :employee_id
)
SELECT *
FROM Employee
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;
Zapytanie – kierownik pracownika :
Identyczne z poprzednim zapytaniem, ale z filtrem LEVEL = 2
aby po prostu uzyskać bezpośredni wiersz nadrzędny.
(Pracownik jest podawany przez zmienną wiązania :employee_id
)
SELECT e.*
FROM Employee e
WHERE LEVEL = 2
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;