クエリ-ツリー構造全体 :
SELECT *
FROM Employee
START WITH ParentID IS NULL
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
クエリ-特定の従業員の子 :
これには階層クエリは必要ありません。
(親はバインド変数:parent_id
によって指定されます )
SELECT *
FROM Employee
WHERE ParentID = :parent_id
ORDER BY LastName, FirstName, ID;
クエリ-特定の従業員の子孫 :
ツリー全体と同じクエリですが、開始点が異なります
(親はバインド変数:parent_id
によって指定されます )
SELECT *
FROM Employee
START WITH ParentID = :parent_id
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;
クエリ-従業員とその祖先 :
前のクエリと同様ですが、CONNECT BY
を使用します 逆にすると、従業員ごとに直属のマネージャーが1人だけになるため、兄弟を注文する必要はありません。
(従業員はバインド変数:employee_id
によって指定されます。 )
SELECT *
FROM Employee
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;
クエリ-従業員のマネージャー :
前のクエリと同じですが、フィルタLEVEL = 2
があります 直接の親行を取得するだけです。
(従業員はバインド変数:employee_id
によって指定されます )
SELECT e.*
FROM Employee e
WHERE LEVEL = 2
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;