Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

Join-Operationen

Besteht zwischen zwei Tabellen eine Beziehung, möchte man die Tabellen gerne verknüpfen. In diesem Artikel lernst du, wie das funktioniert.

Das kartesische Produkt

Die einfachste Verknüpfung ist das kartesische Produkt, das jeden Eintrag der einen Tabelle mit jedem Eintrag der anderen Tabelle verknüpft. In SQL geht das so:

SELECT *FROM Tabelle1, Tabelle2

Dies liefert das kartesische Produkt von Tabelle1 und Tabelle2. Dies ist jedoch nicht erwünscht, wenn die Tabellen in einer Beziehung stehen.

Venn-Diagramm des natürlichen Joins

Der natürliche Join

Man nehme an, dass Tabelle1 den Primärschlüssel primary und Tabelle2 den Fremdschlüssel foreign hat.

Der natürliche Join mit WHERE

Man kann die Tabellen so verknüpfen, dass Primärschlüssel und Fremdschlüssel zusammenfallen, nämlich mit dem SQL-Befehl WHERE:

SELECT *FROM Tabelle1, Tabelle2WHERE Tabelle1.`primary` = Tabelle2.`foreign`

Diese Operation nennt man einen Join, da die Tabellen auf sinnvolle Weise miteinander verbunden werden. SQL bietet jedoch bessere Befehle für diesen Zweck:

Der natürliche Join mit JOIN

SELECT *FROM Tabelle1 JOIN Tabelle2ON Tabelle1.`primary` = Tabelle2.`foreign`

Dies liefert zwar das gleiche Ergebnis wie der Join mit WHERE. Aber aus der Schreibweise ist leichter ersichtlich, dass es sich um einen natürlichen Join handelt, und nicht um ein kartesisches Produkt.

Mehrere natürliche Joins

Es lassen sich beliebig viele Tabellen mit einem Join verbinden. Das geht so:

SELECT *FROM Tabelle1 JOIN Tabelle2 ON Tabelle1.`primary` = Tabelle2.`foreign` JOIN Tabelle3 ON Tabelle2.`primary` = Tabelle3.`foreign` JOIN Tabelle4 ON Tabelle3.`primary` = Tabelle4.`foreign`

Hier wurde erst Tabelle1 mit Tabelle2 verbunden. Das Resultat wurde dann mit Tabelle3 verbunden. Das Resultat wurde wiederum mit Tabelle4 verbunden.

Die eigentliche Reihenfolge spielt keine Rolle. Es wäre auch möglich, zuerst Tabelle2 mit Tabelle3 zu joinen, und das Resultat erst mit Tabelle1 und dann mit Tabelle4 zu joinen.

Datenbanken können die Join-Reihenfolge, die vom Benutzer vorgesehen ist, abändern. Denn oft ist eine Join-Reihenfolge schneller als andere, und Datenbanken wollen immer das Ergebnis so schnell wie irgend möglich berechnen. Als Benutzer braucht man sich darüber aber keine Gedanken machen, solche Überlegungen kann man der Datenbank überlassen.

Andere Join-Arten

Abgesehen vom natürlichen Join gibt es z.B. den äußeren Join, den linken äußeren Join, den rechten äußeren Join und viele mehr. Hier sind ein paar weiterführende Links über Joins:

Du hast noch nicht genug vom Thema?

Hier findest du noch weitere passende Inhalte zum Thema:

Artikel


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?