0
我有一個oracle表,其中包含以下字段MgrID,EmpID,Name。通過指定根和葉節點的oracle分層查詢
層次結構實際上始於CEO級別,但我希望將CIO的EmpID指定爲特定員工的根和EmpID並獲取該員工的層次結構。我如何在Oracle中構建該查詢?
我有一個oracle表,其中包含以下字段MgrID,EmpID,Name。通過指定根和葉節點的oracle分層查詢
層次結構實際上始於CEO級別,但我希望將CIO的EmpID指定爲特定員工的根和EmpID並獲取該員工的層次結構。我如何在Oracle中構建該查詢?
在ORCALE可以使用選擇與開始與和
select * from your_table
start with EmpID = yuor_value
connect by prior your_child = your_parent;
甲骨文設置連接:
CREATE TABLE Table_name (
EmpID INT PRIMARY KEY,
MgrID INT REFERENCES Table_name (EmpID),
Name VARCHAR2(10),
Role VARCHAR2(10)
);
INSERT INTO table_name
SELECT 1, NULL, 'Amy', 'CEO' FROM DUAL UNION ALL
SELECT 2, 1, 'Bob', 'Director' FROM DUAL UNION ALL
SELECT 3, 1, 'Carol', 'Director' FROM DUAL UNION ALL
SELECT 4, 2, 'Deb', 'CIO' FROM DUAL;
查詢:
SELECT *
FROM table_name
START WITH role = 'CIO'
CONNECT BY PRIOR MgrID = EmpID;
輸出:
EMPID MGRID NAME ROLE
---------- ---------- ---------- ----------
4 2 Deb CIO
2 1 Bob Director
1 Amy CEO
請張貼一些樣本數據和期望的結果;你到目前爲止嘗試過什麼,你有什麼問題? – Aleksej