Hellihello Vinzenz,
Das kartesische Produkt der beiden Tabellen ergibt sich als
*CROSS JOIN*
und nichts anderes. CROSS JOIN, nicht LEFT JOIN, nicht INNER JOIN!
Es sei denn, ihnen wären keine Bedingungen mitgegeben?
Nein, Du kannst nicht alles mit WHERE erreichen (es sei denn, das DBMS bietet eine proprietäre Syntax für OUTER JOINs über die WHERE-Klausel wie z.B. Oracle oder MS SQL-Server).
Aha. Einen Teil konnte man, aber gut zu wissen, dass nicht alles geht.
Beispiel mit Erläuterungen: /archiv/2008/4/t170482/#m1114517
Darin:
liefert wegen der speziellen Behandlung von NULL-Werten bei Vergleichen nur folgende Datensätze zurück, die Gremien, denen die Person mit der id 10 angehört:
id | bezeichnung | id_person
----------------------------
1 | Spiel | 10
3 | Jugend | 10
Führst Du jedoch die Einschränkung auf die Person mit der id 10 in der Join-Bedingung auf, so erhältst Du alle Gremien:
Wieso hebt das AND die Null-Zeilen nicht auf, das WHERE aber wohl? Sind die beim "WHERE" schon "weg"? Oder fliegen die durch das WHERE raus? Ich vermutete jetzt, dass erstmal nur INNER JOIN eine Art Schnittmenge bzw. Teilmenge mit dem Zusatz: "ohne Leere Elemente" liefert.
Dank und Gruß,