Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik

NATURAL JOIN & USING


Notizen:

Um Schreibarbeit zu ersparen, führt SQL:1999 folgende Operatoren ein:
... Tab1 NATURAL JOIN Tab2 ...
Alle Spalten der beiden Tabellen mit übereinstimmenden Namen & kompatiblen Datentypen werden zur Bildung eines INNER (equi-)JOIN heran gezogen. Klingt praktisch, aber: haben z.B. beide Tabellen eine Spalte „Nr“ oder „ID“, wird auf jeden Fall darauf gejoined, auch wenn das meistens Unsinn ist. Insbesondere eine Spalte „Anmerkung“ kann und wird Verwirrung stiften. Augrund des Implizismus (welche Spalten?) also insgesamt wenig(er) empfehlenswert.
... Tab1 ... JOIN Tab2 USING (<Feldliste>) ...
Die in <Feldliste> angegebenen Spalten der beiden Tabellen werden zur Bildung eines INNER (equi-)JOIN herangezogen. Namen & Typen müssen auch hier übereinstimmen bzw. zusammen passen. Sehr praktisch!
Anm.: MS SQL Server 2000 unterstützt beide Klauseln nicht.

Eine abschließende Bemerkung zu Joins: Beachten Sie, dass Sie Tabellen immer „ordentlich“ joinen müssen, selbst wenn im DB-Design diese Tabellen zueinander in Beziehung gesetzt wurden. Diese Beziehung bewirkt lediglich, dass Falscheingaben verhindert werden und hat rein gar nichts mit der Selektion von Datensätzen zu tun.
Im Klartext bedeutet das 2 Dinge:
SELECT * FROM t1, t2;
liefert immer einen CROSS JOIN aus t1 & t2, auch wenn die beiden zueinander in Beziehung stehen!
Und 2.: Sie können jedwede Tabellen zum Abfragen joinen (so wie auch zum Ändern bzw. Einfügen, was immer das im Moment heißen mag). Dabei ist es ganz egal, ab es eine Beziehung zwischen den Tabellen gibt oder nicht. Das gilt ebenso für die gerade vorgestellten Klauseln NATURAL JOIN und USING.