2016-04-07 5 views
0

Ich habe eine Oracle-Tabelle mit den folgenden Feldern MgrID, EmpID, Name.Oracle hierarchische Abfrage durch Angabe von Stamm-und Blatt-Knoten

Die Hierarchie beginnt eigentlich auf CEO-Ebene, aber ich möchte die EmpID von CIO als Root und EmpID eines bestimmten Mitarbeiters angeben und die Hierarchie für diesen Mitarbeiter abrufen. Wie erstelle ich diese Abfrage in Oracle?

+0

Bitte einige Beispieldaten und gewünschtes Ergebnis veröffentlichen; Was hast du bisher probiert und welches Problem hast du? – Aleksej

Antwort

1

In Orcale Sie wählen mit Start mit und verbinden durch

select * from your_table 
start with EmpID = yuor_value 
connect by prior your_child = your_parent; 
0

Oracle-Setup verwenden können:

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; 

Abfrage:

SELECT * 
FROM table_name 
START WITH role = 'CIO' 
CONNECT BY PRIOR MgrID = EmpID; 

Ausgang:

 EMPID  MGRID NAME  ROLE  
---------- ---------- ---------- ---------- 
     4   2 Deb  CIO   
     2   1 Bob  Director 
     1   Amy  CEO   
Verwandte Themen