Hallo Heiko,
wenn du mal bei der Abfrage die Bedingung
and ((tree2contact.contact_id=25) or (tree2contact.contact_id is Null))
weglässt, bekommst du folgendes Ergebnis:
Code:
NAME ID CONTACT_ID
---------------------------
Banken 9 <NULL>
Behörden 8 22
Kunden 6 22
Kunden 6 25
wenn du jetzt die obige Bedingung wieder in der
Where-Clausel hinzufügst,
werden nur noch die "Kunden" mit CONTACT_ID=22 und die "Behörden" mit CONTACT_ID=22 weggefiltert.
"Behörden" mit CONTACT_ID=NULL gibt es in der
Left-Join-Ergebnismenge gar nicht,
da durch das "left join" ein Satz "Behörden" mit CONTACT_ID=22 in der
Left-Join-Ergebnismenge existiert.
Man muß also bereits vor den "zusammenjoinen"
alle
tree2contact-Datensätze herausfiltern die man nicht braucht.
Damit wird für den Datensatz Tree.ID=8 ('Behörden') kein passender
Datensatz in tree2contact gefunden und CONTACT_ID bleibt=NULL
Ich hoffe das ist einigermaßen verständlich ausgedrückt.
alex
Edit: Wo bleibt eigentlich mein "Delphi-Tage 2009 ich bin dabei" ?