Hallo,
Explizite Join-Syntax ist übersichtlicher, leichter zu lesen und vermeidet Fehler [1] - und bei Outer Joins möchtest Du nicht die proprietäre Syntax Deines DBMS lernen, so denn eine existiert.
[1] dazu gibt es mindestens einen Thread in der aktuellen Forumshauptdatei.
Nee, OUTER JOINS will ich nicht, lieber garkeine.
OUTER JOINs sind tägliches Brot, meist in Form eines LEFT JOIN. OUTER ist normalerweise optional und wird daher üblicherweise weggelassen, sprich statt LEFT JOIN kann man auch LEFT OUTER JOIN schreiben.
Da
SELECT
spaltenliste
FROM
a
RIGHT JOIN
b
ON
join-bedingung
äquivalent ist zu
SELECT
spaltenliste
FROM
b
LEFT JOIN
a
ON
join-bedingung
nutzt übrigens so gut wie niemand RIGHT JOINs, selbst wenn diese vom DBMS implementiert sind (in vielen Fällen schreibt der Optimierer im einem ersten Schritt die RIGHT JOINs zu LEFT JOINs um :-)).
Daneben gibt es noch den FULL OUTER JOIN. Sollte dieser nicht implementiert sein (wie z.B. bei MySQL), so kann man diesen am einfachsten über
SELECT
spaltenliste
FROM
b
LEFT JOIN
a
ON
join-bedingung
UNION
SELECT
spaltenliste
FROM
a
LEFT JOIN
b
ON
join-bedingung
Es sei denn, man verwendet eine 3er-Version von MySQL, die neben vielen anderen hochinteressanten und wichtigen Sachen noch nicht mal UNION beherrscht. Von einem Provider, der in punkto MySQL sowas antiquiertes anbietet, sollte man allerdings Abstand halten. Derzeit hat es eine Produktionsversion aus der 5.0er-Serie zu sein. 5.1 ist erst ein Release-Candidate und sollte produktiv noch nicht genutzt werden.
Freundliche Grüße
Vinzenz