Bei einem Self Join wird eine Tabelle mit sich selbst verknüpft.
Da die Tabelle zweimal in der FROM- Klausel erscheint, muss ein Alias verwendet werden.
SELECT a.*, b.* FROM
tabelle1 a, tabelle1 b
WHERE a.spalte1 = b.spalte2
Beispiel:
Geben Sie die Mitarbeiter und ihre direkten Vorgesetzten aus:
SQL> SELECT arbeiter.ename "Mitarbeiter", vorgesetzter.ename "Chef"
FROM emp arbeiter, emp vorgesetzter
WHERE vorgesetzter.empno=arbeiter.mgr ;
Mitarbeiter Chef
---------- --------
SMITH FORD
ALLEN BLAKE
WARD BLAKE
JONES KING
MARTIN BLAKE
BLAKE KING
CLARK KING
SCOTT JONES
TURNER BLAKE
ADAMS SCOTT
JAMES BLAKE
FORD JONES
MILLER CLARK
Hinweis:
Ab 9i gibt es eine neue Syntax für Joins. Der oben genannte Self Join kann jetzt auch so geschrieben werden:
SQL> SELECT arbeiter.ename "Mitarbeiter", vorgesetzter.ename "Chef"
FROM emp arbeiter JOIN emp vorgesetzter ON
(arbeiter.mgr=vorgesetzter.empno);
Wenn Sie mehr zur neuen Syntax für Joins erfahren möchten, lesen Sie unseren Monatstipp "Neuerungen zu Joins".
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.