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