Wenn ich Sie richtig verstanden habe, wollen Sie nur Manager auswählen.
Das folgende Beispiel basiert auf dem Schema von Scott.
Hier sind alle Mitarbeiter zusammen mit ihren Vorgesetzten (hierarchisch) aufgeführt, damit die Vorgesetzten leichter zu erkennen sind.
SQL> select lpad(' ', (level - 1) * 2) || ename ename
2 from emp
3 start with mgr is null
4 connect by prior empno = mgr;
ENAME
------------------------------------------------------
KING -- manager
JONES -- manager
FORD -- manager
SMITH -- employee
BLAKE -- manager
ALLEN -- employee
WARD -- employee
MARTIN -- employee
TURNER -- employee
JAMES -- employee
CLARK -- manager
MILLER -- employee
12 rows selected.
SQL>
Zusätzliches WHERE
-Klausel gibt nur Manager zurück:
SQL> select lpad(' ', (level - 1) * 2) || ename ename
2 from emp
3 where empno in (select mgr from emp)
4 start with mgr is null
5 connect by prior empno = mgr;
ENAME
--------------------------------------------------------
KING
JONES
FORD
BLAKE
CLARK
SQL>
was ersetzen wird mit SYS_CONNECT_BY_PATH
ausgewählt , erhalten wir eine andere Ausgabe:
SQL> select sys_connect_by_path(ename, ' / ') path
2 from emp
3 where empno in (select mgr from emp)
4 start with mgr is null
5 connect by prior empno = mgr;
PATH
----------------------------------------------------
/ KING
/ KING / JONES
/ KING / JONES / FORD
/ KING / BLAKE
/ KING / CLARK
SQL>
Oder, Ihren Schritten folgend, mit einem Selbstbeitritt des EMP
Tabelle erhalten wir
SQL> select m1.ename manager, m2.ename his_manager
2 from emp m1 join emp m2 on m1.mgr = m2.empno
3 where m1.empno in (select mgr from emp);
MANAGER HIS_MANAGER
---------- -------------
FORD JONES
CLARK KING
BLAKE KING
JONES KING
SQL>
Wählen Sie diejenige, die am besten zu Ihnen passt. Ich glaube, andere Mitglieder werden andere Optionen vorschlagen.