Tabellen nebeneinander stellen mit INNER JOIN

Der INNER JOIN stellt die Daten zweier Tabellen “nebeneinander”. Über die JOIN Bedingung, die mit ON eingeleitet wird, legt man fest, welche Zeilen der linken mit welchen Zeilen der rechten Tabelle in einer Zeile der Ergebnistabelle landen. In der Abbildung ist ein Beispiel dafür mit der folgenden Abfrage:

SELECT i.docnr,
       i.amount,
       i.curr,
       c.text
  FROM invoice as i
  INNER JOIN currency as c
  ON i.curr = c.curr

Kombinatorik beim INNER JOIN

  • Datensätze einer Tabelle, die anhand der ON-Bedingung mindestens einen Partner in der jeweils anderen Tabelle finden, kommen in die Ergebnismenge. Im Beispiel: EUR, ALL und USD
  • Datensätze ohne Partner tauchen nicht im Ergebnis auf. Im Beispiel: DEM aus der linken Tabelle und GBP aus der rechten Tabelle.
  • Wenn ein Datensatz mehr als einen Partner findet, dann kommt er entsprechend mehrfach vor. Im Beispiel: EUR aus der rechten Tabelle wird zu den ersten beiden Sätzen der Linken Tabelle.
Beispiel für einen INNER JOIN

Der INNER JOIN stellt die Daten zweier Tabellen “nebeneinander”. Über die JOIN Bedingung, die mit ON eingeleitet wird, legt man fest, welche Zeilen der linken mit welchen Zeilen der rechten Tabelle in einer Zeile der Ergebnistabelle landen. In der Abbildung ist ein Beispiel dafür mit der folgenden Abfrage:

In unserem Beispiel in der Abbildung sieht man, dass der INNER JOIN auch unerwünschte Auswirkungen haben kann. Es werden Datensätze aus der INVOICE Tabelle nicht übernommen, weil kein Eintrag in der CURRENCY Tabelle vorhanden ist. Dieses Problem wird mit den anderen JOIN-Arten im nächsten Thema gelöst.

Die JOIN Bedingung

Mit dem Schlüsselwort ON beginnt die JOIN Bedingung. Diese muss beim INNER JOIN immer angegeben werden. Man kann sich einen JOIN so vorstellen, als ob zunächst das Kreuzprodukt der Datensätze, also alle Kombinationen von linker und rechter Tabelle gebildet werden. Und dann wird Zeile für Zeile geprüft, ob die JOIN-Bedingung zutrifft.

Es sind die gleichen Prädikate wie in der der WHERE-Klausel erlaubt. Insbesondere kann auch auf die Daten gefiltert werden, bevor sie in den JOIN eingehen.

Equi-JOINs

Am schnellsten werden JOIN Bedingungen mit einer Prüfung auf Gleichheit und bei mehreren Spalten einer Verknüpfung mit AND ausgeführt. Diese nennt man Equi-JOINs.