Der natürliche Verbund
In der Praxis trifft man häufig den Fall an, dass nicht alle Daten in einer einzigen Tabelle vorliegen, sondern mehrere Tabellen existieren. An dieser Stelle kommen JOINS
zum Einsatz, die dazu dienen, aus den Daten zweier Tabellen eine Ergebnistabelle zu bilden. Man unterscheidet zwischen INNER JOIN
, LEFT (OUTER) JOIN
, RIGHT (OUTER) JOIN
und FULL (OUTER) JOIN
.
Für das bessere Verständnis soll die betrachtete Tabelle Schueler um ein weiteres Attribut erweitert werden: GTA_id. Zusätzlich existiert jetzt neben der Tabelle Schueler eine Tabelle GTA. Im Folgenden werden die genannten Join-Arten auf diesen Tabellen angewendet, um die Unterschiede besser darstellen zu können.
Schueler
S_Nr | Nachname | Vorname | Klasse | GTA_Nr |
---|---|---|---|---|
1 | Kluge | Luca | 10b | null |
2 | Ackermann | Katrin | 9a | 2 |
3 | Boehm | Uwe | 8c | 1 |
GTA
GTA_Nr | Beschreibung |
---|---|
1 | Schach |
2 | Tastaturschreiben |
3 | Jugend forscht |
(INNER) JOIN
Der Inner Join liefert alle Daten zurück, die entsprechend der Bedingung (mit ON mitgeteilt) übereinstimmen.
SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
INNER JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;
Vorname | Bezeichnung |
---|---|
Katrin | Tastaturschreiben |
Uwe | Schach |
LEFT (OUTER) JOIN
Der LEFT OUTER JOIN liefert alle Daten der linken Tabelle zurück und weist ihnen die Daten der rechten Tabelle entsprechend der Bedingung zu.
SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
LEFT JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;
Vorname | Bezeichnung |
---|---|
Luca | null |
Katrin | Tastaturschreiben |
Uwe | Schach |
RIGHT (OUTER) JOIN
Der RIGHT (OUTER) JOIN liefert alle Daten der rechten Tabelle zurück und weist ihnen die Daten der linken Tabelle entsprechend der Bedingung zu.
SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
RIGHT JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;
Vorname | Bezeichnung |
---|---|
Katrin | Tastaturschreiben |
Uwe | Schach |
null | Jugend forscht |
FULL (OUTER) JOIN
Der FULL (OUTER) JOIN liefert alle Daten aus beiden Tabellen zurück und ordnet sie entsprechend der Bedingung einander zu.
SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
FULL OUTER JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;
Vorname | Bezeichnung |
---|---|
Katrin | Tastaturschreiben |
Uwe | Schach |
Kluge | null |
null | Jugend forscht |