Zu Oracle

Bereich:
Versionsinfo:
SQL
10.1, 10.2, 11.1, 11.2
Erstellung:
Letzte Überarbeitung:
08/2005 MP
06/2009 MA
 Als PDF Downloaden!

Non-Equijoin

Bei einer Verknüpfung durch einen Non-Equijoin besteht das "Problem", dass sich keine Spalten der zu verknüpfenden Tabellen direkt entsprechen und somit die Beziehung auch nicht durch ein Gleichheitszeichen dargestellt werden kann. Ein Zusammenhang ergibt sich lediglich durch überschneidende Wertebereiche der Inhalte einzelner Spalten. In diesem Fall erfolgt die Verknüpfung durch den Bereichsoperator BETWEEN ... AND.


Beispiel:

Es soll ermittelt werden, in welcher Gehaltsstufe die Mitarbeiter liegen.

SQL> SELECT e.ename, e.job, e.sal, s.grade
     FROM emp e, salgrade s
     WHERE e.sal BETWEEN s.losal AND s.hisal
     ORDER BY s.grade, e.sal;

ENAME      JOB              SAL      GRADE
---------- --------- ---------- ----------
SMITH      CLERK            800          1
JAMES      CLERK            950          1
ADAMS      CLERK           1100          1
WARD       SALESMAN        1250          2
MARTIN     SALESMAN        1250          2
MILLER     CLERK           1300          2
TURNER     SALESMAN        1500          3
ALLEN      SALESMAN        1600          3
CLARK      MANAGER         2450          4
BLAKE      MANAGER         2850          4
JONES      MANAGER         2975          4
SCOTT      ANALYST         3000          4
FORD       ANALYST         3000          4
KING       PRESIDENT       5000          5


Hinweis:

Anstelle des BETWEEN ... AND-Operators können auch die Operatoren >= und <= verwendet werden.
Ab 9i gibt es eine neue Syntax für Joins (die alte Syntax ist natürlich nachwievor gültig). Der Non-Equijoin von oben würde sich dann wie folgt zusammensetzen:

SQL> SELECT e.ename, e.job, e.sal, s.grade
     FROM emp e JOIN salgrade s ON (e.sal BETWEEN s.losal AND s.hisal)
     ORDER BY s.grade, e.sal;

Für eine genauere Erläuterung der neuen Syntax lesen Sie auch unseren Tipp "Neuerungen zu Joins".
Bei beiden Beispielen ist kein Tabellenalias notwendig, da die Spalten eindeutige Namen besitzen. Sie führen aber zu einer besseren Lesbarkeit des SELECT-Statements.

Suche

Kontakt

Telefon:
  089 6228 6789-0

Telefon (noch gültig):
  089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.