Bei einem Equijoin werden die Tabellen über ein Gleichheitszeichen verknüpft: der Wert einer Spalte in der ersten Tabelle muss genau dem Wert einer Spalte in der zweiten Tabelle entsprechen. Zeilen ohne Entsprechung in der jeweils anderen Tabelle werden nicht ausgewählt.
Ab Version 9i kann man sowohl die herkömmliche Oracle-Syntax als auch die ANSI-Syntax verwenden.
Ansi:
SELECT t1.spalte1, t1.spalte2, t2.spalte1, t2.spalte2, .....
FROM tabelle1 t1 JOIN tabelle2 t2
ON t1.spalte1 = t2. spalte1
WHERE <weitere Bedingungen>
Oracle:
SELECT t1.spalte1, t1.spalte2, t2.spalte1, t2.spalte2, .....
FROM tabelle1 t1, tabelle2 t2
WHERE t1.spalte1 = t2. spalte1
AND <weitere Bedingungen>
Für die Performance der Select-Anweisung ist es besser, für die Tabellen einen kurzen Aliasnamen zu vergeben und alle Spalten mittels Punktnotation mit dem Aliasnamen ihrer Herkunftstabellen zu kennzeichnen.
Beispiel:
Gesucht sind Name, Gehalt, Abteilungsname, Vorgesetzter und Arbeitsort der emp-Mitarbeiter, die mehr als 1000 € verdienen.
SELECT ma.ename Chef, ma.sal, d.dname, bo.ename Chef, d.loc
FROM emp ma JOIN dept d
ON ma.deptno = d.deptno
JOIN emp bo
ON ma.mgr = bo.empno
WHERE ma.sal > 1000;
oder
SELECT ma.ename Chef, ma.sal, d.dname, bo.ename Chef, d.loc
FROM emp ma, dept d, emp bo
WHERE ma.deptno = d.deptno
AND ma.mgr = bo.empno
AND ma.sal > 1000;
CHEF SAL DNAME CHEF LOC
---------- ------ ---------- ---------- ----------
FORD 3000 RESEARCH JONES DALLAS
SCOTT 3000 RESEARCH JONES DALLAS
TURNER 1500 SALES BLAKE CHICAGO
MARTIN 1250 SALES BLAKE CHICAGO
WARD 1250 SALES BLAKE CHICAGO
ALLEN 1600 SALES BLAKE CHICAGO
MILLER 1300 ACCOUNTING CLARK NEW YORK
ADAMS 1100 RESEARCH SCOTT DALLAS
CLARK 2450 ACCOUNTING KING NEW YORK
BLAKE 2850 SALES KING CHICAGO
JONES 2975 RESEARCH KING DALLAS
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.