Hallo

das rechnen mit NULL gehorcht einer dreiwertigen Logik:
alle Vergleiche mit NULL liefern false
d.H. inner join lässt alle Sätze weg, wo eine der beiden Dateien im Vergleichsfeld NULL hat und auch die wo beide NULL haben.
Das liefern von NULL Werten kann man mit COALESCE unterdürcken. COALESCE(FEld1, ' ') liefert blanks, wenn Feld1 NULL ist, ansonsten den Inhalt von Feld1).

mfg

Dieter Bender

Zitat Zitat von Fuerchau
Wenn im Join keine on-Beziehung benannt ist, sondern ausschließlich eine Where-Bedingung unter Ausschluss von NULL-Values, dann ist das ein INNER JOIN. Enthält allerdings die 1. Datei auch NULL-Werte in den Where-Feldern, kann es zu unerwünschten Ergebnissen führen, da NULL in der 1. Datei mit NULL in der 2. verglichen wird, was auch zutrifft, wenn da kein satz ist.

Also besser immer per JOIN die Verbindung definieren (ausser, wenn NULL's kein Thema sind).

Left [outer] Join on = Alle Sätze der 1. Datei, falls vorhanden auch die der 2. Datei (im Gegensatz zu Query liefert SQL den NULL-Wert und nicht den Default)

Exception Join on = Alle Sätze der 1. Datei, die NICHT in der 2. Datei sind