dedlfix: SQL INNER JOIN

Beitrag lesen

Hi!

AND A.date BETWEEN '2009-11-19 00:00:00' AND '2009-11-19 23:59:59'
AND A.number is NULL
Das müsste der Fehler sein: Wenn kein A-Datensatz vorhanden ist, kann dessen "date" auch nicht im angegebenen Bereich liegen.
Nö, geht trotzdem nicht. 0 Zeilen.

Was konkret hast du gemacht? Die erste der zitierten Zeilen entfernt, oder was anderes?

Ausserdem ist die Frage ob A.number is NULL richtig ist, A.number nicht NULL ist, sondern der Datensatz schlicht nicht existiert.

Ja, das ist so bei einem Outer Join. Du verbindest zwei Tabellen und hast im Ergebnis eine Anzahl Spalten aus beiden Tabellen. Nur weil in der einen Tabelle kein Datensatz existiert ändert sich nicht die Spaltenanzahl der Ergebnismenge für diesen einen Eintrag. Stattdessen werden die nicht vorhandenen Werte durch NULL ersetzt. Und genau deshalb kann man mit IS NULL nach nicht vorhandenen Datensätzen fragen.

Lo!