Halihallo Axel
select * from tabelle1, tabelle2 where tabelle1.id = tabelle2.id
Die Syntax ist korrekt und selbst Access kennt diesen simplen JOIN.
Das ist korrekt. Auch ACCESS kann diesen Unsinn.
Unsinn? - Weil ein INNER JOIN eigentlich das Kreuzprodukt erzwingt (obwohl natürlich
vom QueryOptimizer optimiert) und somit aperformant "klingt"?
Da ist kein großer Unterschied. Auch
SELECT * FROM tabelle1, tabelle2
verbindet erstmal jeden Datensatz aus tabelle1 mit jedem Datensatz aus tabelle2. WHERE filtert dann die heraus, bei denen gilt:
tabelle1.id = tabelle2.id
Ja, das ist mir wohl bewusst. Ich wollte nur nachfragen, warum du Unsinn sagtest :-)
Alle heutigen QueryOptimizer untersuchen erst die Where-Klausel und binden das beim
Selektieren ein, folglich ist das crossproduct nur der Worst-Case, kommt jedoch nur
seltener vor (nicht immer). Aber lassen wir das.
Das meinte ich. JOIN ist für die Tabellenverbindung, WHERE ist für die Filterung zuständig. Das ist einfach übersichtlicher als komplex verschachtelte WHERE-Klauseln.
FULL ACK.
Leider habe ich noch keine komplette SQL-Standard-Bibliothek gefunden. Nur gegen Bezahlung:
The Complete Reference - SQL
von James R. Groff & Paul N. Weinberg
ISBN: 0-07-211845-8
s. 174ff
soeben nachgelesen.
allerdings ist JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN) Bestandteil der ISO-SQL-92 Standards.
Korrekt. Danke für die Korrektur! *schäm*
Viele Grüsse und Danke
Philipp