Full-Join, wasn das?

lambda

Erfahrenes Mitglied
Nabend zusammen,

wo ist denn der Unterschied zwischen

SELECT * FROM tabelle1, tabelle2 WHERE tab1_id = id

und

SELECT * FROM tabelle1 JOIN tabelle2 WHERE tab1_id = id

Was dabei raus kommt ist mir denke ich klar, eigentlich genau das gleiche oder?


Hoffe das ist noch nicht 1000mal durchgekaut worden... danke vorab!
 
Da kommt das gleiche raus, weil es kein FULL-Join ist (der eigentlich FULL OUTER JOIN heißt). Das Konstrukt mit JOIN ist lediglich die explizite Form des NATURAL JOIN, der über Attributwertgleichheit Tabellen verknüpft. Die Schreibweise mit dem Komma dazwischen ist lediglich die implizite Notation dieser Join-Variante.

Im SQL-Standard sieht die Join-Notation im Übrigen eigentlich so aus:
SELECT * FROM tab1 JOIN tab2 ON tab1.id = tab2.id bzw.
SELECT * FROM tab1 NATURAL JOIN tab2 ON id

Beim FULL (OUTER) JOIN beinhaltet das Ergebnis die Tupel aus beiden zu joinenden Tabellen, wobei die Tupel die eigentlich hätten rausfliegen sollen jeweils mit NULL-Werten (in ihren Attributen) versehen werden. In der Regel ist der FULL OUTER JOIN aber kaum sinnvoll einsetzbar.
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück