Dies ist eine alte Version des Dokuments!
SQL-Joins
Wie werden die Tabellen (und Entitäten) jetzt aber mit SQL Abfragen verbunden, so das die gewünschten „zusammengesetzten“ Informationen als Ergebnis der Abfrage vorliegen?
Aufbau
Eine Klausel für SQL-Joins ist im Wesentlichen folgendermaßen aufgebaut:
SELECT [DISTINCT] { spalten | * } FROM tabelle1, tabelle2, ... WHERE tabelle1.spalte1=tabelle2.spalte1, tabelle1.spalte2=tabelle2.spalte2, ...
Um die Ausdtrücke abzukürzen, kann man Tabellen mit mit dem Schlüsselwort AS
mit Aliasen bezeichnen:
SELECT [DISTINCT] { spalten | * } FROM tabelle1 AS t1, tabelle2 AS t2, ... WHERE t1.spalte1=t2.spalte1,t1.spalte2=t2.spalte2, ...
Das Ergebnis eines Joins ist eine Tabelle mit allen Spalten, die in der SQL-Klausuel angegeben wurden. Die Spaltenbezeichnung muss eindeutig sein. Enthalten die Tabellen tabelle1
und tabelle2
gleichnamige Spalten wie id
, muss die Spalte mit tabelle1.id
eindeutig benannt sein.
Wird keine WHERE-Bedingung angegeben, wird das Kreuzprodukt der Tabellen gebildet, d.h. jeder Datensatz einer Tabelle wird mit jedem der anderen Tabelle(n) kombiniert.
Beispiele
Ausgabe aller Kunden mit den Nummern ihrer bestellten Artikel
SELECT k.KNr, k.KVorname, k.KNachname, b.ANr FROM Kunden AS k, Bestellt AS b WHERE k.KNr=b.KNr
Ausgabe aller Kunden mit den Namen ihrer bestellten Artikel
SELECT k.KNr, k.KVorname, k.KNachname, a.Name FROM Kunden AS k, Bestellt AS b, Artikel AS a WHERE k.KNr=b.KNr AND b.ANr=a.ANr