Joins
Joins führen Daten zusammen, die in unterschiedlichen Tabellen gespeichert sind, und geben diese in gefilterter Form in einer Ergebnistabelle aus. Welche Daten der Ausgangstabellen in die Ergebnis-Tabelle übernommen werden, bestimmt der Anwender durch die Wahl eines Join-Typs und durch die Definition einer Selektionsbedingung. Voraussetzung dafür ist, dass die ausgewählten Tabellen über Fremdschlüsselbeziehungen miteinander verknüpft sind. Die Selektionsbedingung kann alternativ mithilfe des Schlüsselwortes USING realisiert werden, Voraussetzung ist dieselbe Bezeichnung des Primär- und Fremdschlüssels in beiden referenzierten Tabellen.
SELECT * FROM Mitarbeiter JOIN Abteilung USING(AbteilungsID);
Join-Anweisung | Visualisierung | SQL-Statement |
---|---|---|
(INNER) JOIN | SELECT * FROM table_a JOIN table_b ON table_a.key = table_b.key; | |
LEFT/RIGHT INNER JOIN | SELECT * FROM table_a LEFT JOIN table_b ON table_a.key = table_b.key; | |
LEFT/RIGHT OUTER JOIN | SELECT * FROM table_a RIGHT JOIN table_b ON table_a.key = table_b.key WHERE table_b.key = null; |
INNER-Join & OUTER-Join
- INNER-Join: Bei einem
INNER JOIN
handelt es sich um eine gefilterte Form des Joins, bei der in der Ergebnismenge nur die Tupel beider Ausgangstabellen zusammengeführt werden, die die vom Anwender definierte Selektionsbedingung erfüllen. - OUTER-Join: Der
OUTER JOIN
stellt eine Erweiterung desINNER JOINS
dar. Ergebnismenge einesOUTER JOINS
enthält die Tupel beider Ausgangstabellen, die die vom Anwender definierte Selektionsbedingung erfüllen, wie auch alle restlichen Tupel der ersten Tabelle, der zweiten Tabelle oder beider Tabellen.OUTER JOINS
werden entsprechend alsLEFT OUTER JOIN
,RIGHT OUTER JOIN
oderFULL OUTER JOIN
realisiert.
EQUI-Join & NON-EQUI-Join
- EQUI-Join: Alle bisher vorgestellten
JOIN
-Beispiele stellenEQUI JOINS
dar.EQUI JOINS
sind dadurch gekennzeichnet, dass sie ausschließlich das Gleichheitszeichen als Vergleichsoperator zulassen. - NON-EQUI-Join:
NON EQUI JOINS
schließen Operationen auf Basis der Gleichheit von Spalten aus. Es sind somit alle Vergleichsoperationen mit Ausnahme des Gleichheitszeichens erlaubt.
SELF-Join
Der Self-Join ist ein Join einer Tabelle mit sich selber. Er wird oft in rekursiven Abfragen verwendet. Ein Self-Join ist ein orthogonales Konzept zu den anderen Join-Typen, da er sich auf die verwendete Tabelle bezieht. Er kann daher zusätzlich mit jedem anderen Join-Typ übereinstimmen, d.h. es gibt Self-Joins, die zusätzlich Inner-Joins
sind oder Outer-Joins
usw.