Der SQL Natural Join verknüpft zwei Tabellen über zwei Spalten mit identischen Namen.
SELECT Spalte
FROM TabelleA
NATURAL JOIN TabelleB;
Der SQL NATURAL JOIN ist eine Kurzform für INNER JOINs, falls die abzugleichenden Spalten denselben Namen besitzen. Dieser kann genutzt werden, wenn der Primär- und Fremdschlüssel denselben Spaltennamen haben.
Tabelle A | ||
SpalteA | SpalteB | SpalteC |
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
Tabelle B | ||
SpalteD | SpalteE | SpalteC |
1 | 9 | 3 |
3 | 5 | 6 |
7 | 8 | 0 |
SELECT *
FROM TabelleA
NATURAL JOIN TabelleB;
SpalteA | SpalteB | SpalteC | SpalteD | SpalteE |
1 | 2 | 3 | 1 | 9 |
4 | 5 | 6 | 3 | 5 |
NATURAL JOIN - Nachteile
Der NATURAL JOIN birgt allerdings Nachteile mit sich.
- Sollte ein Spaltenname verändert werden, funktioniert die gesamte Abfrage nicht mehr.
- Es kann auch vorkommen, dass zwei Spalten einen ähnlichen Namen haben, der allerdings nicht identisch ist.
- Folgt nach der SELECT Anweisung die in beiden Tabellen identische Spalte (Spalte_X), darf vor ihr nicht der Tabellenname stehen, da es sonst zu einer Fehlermeldung kommt.
SELECT TabelleA.Spalte, TabelleB.Spalte, Spalte_X
FROM TabelleA
NATURAL JOIN TabelleB;
- Haben jeweils zwei Spalten aus beiden Tabellen die identischen Namen, müssen beide Spalten zwischen beiden Tabellen übereinstimmen, damit die Werte angefügt werden.
TabelleA | ||
SpalteA | SpalteB | SpalteC |
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
TabelleB | ||
SpalteA | SpalteB | SpalteD |
1 | 9 | 9 |
3 | 5 | 6 |
7 | 8 | 0 |
SELECT *
FROM TabelleA
NATURAL JOIN TabelleB;
SpalteA | SpalteB | SpalteC | SpalteD |
7 | 8 | 9 | 0 |