Datensätze filtern, zu denen kein relationaler Datensatz existiert

Hin und wieder kann es hilfreich sein zu wissen, zu welchem Datensatz es keinen relationalen Datensatz gibt. Konkret könnte das bspw. die Anforderung sein, alle Firmendatensätze zu filtern, zu denen noch keine Korrespondenz (keine Kontakteinträge) stattgefunden hat.

Anbei finden Sie einen beispielhaften Filterausdruck - basierend auf der mitgelieferten Beispielsolution - um alle Firmendatensätze zu filtern, zu denen noch keine Kontakte existieren:

SELECT "Companies"."ID"
FROM "Companies"
WHERE NOT EXISTS(SELECT "CompanyID" FROM "Contacts" WHERE "Contacts"."CompanyID" =
"Companies"."ID") 


Dieser Filter muss unter „Organisation > Filter / Extrakt > Freie SQL-Abfrage“ der Firmenansicht ausgeführt werden.
Bei Bedarf können Sie sich diesen Filterausdruck auch abspeichern und auch anderen Benutzern zur Verfügung stellen. Zusätzlich kann über einen Button in der Eingabemaske (Eingabemaskendesigner: Schaltflächen > Organisation > Filter / Extrakt > Filterausdruck ausführen) der gespeicherte Filter ausgewählt und ausgeführt werden.
Dieser Ausdruck wurde mit PostgreSQL 8.4 und Microsoft SQL Server 2008 getestet.

Tipp:
Durch Weglassen des NOT Operators im Filterausdruck können Sie die Firmen abfragen, zu denen es bereits Kontakte gibt.

IDKBAD001209 KBAD001209