NOT IN Abfrage auf Untertabelle

Hallo zusammen,

ich stehe vor einer scheinbar einfachen Abfrage, komme aber leider nicht weiter.

Ausgangssituation:
Als Datenquelle habe ich folgende Tabellen:

Tabelle 1: ConfigurationItems.Id
Tabelle 2: Appointments.ConfigurationItemId

Ein ConfigurationItem kann Termine (Appointments) haben, muss aber nicht. Ich möchte nun ausschließlich die ConfigurationItems ausgeben, die keinen Termin zugeordnet haben.

Mein Ansatz:
Ich habe die beiden Tabellen auf unterschiedliche Weisen verknüpft und versucht, mit der Exists()-Funktion zu filtern. Leider scheint mein Verständnis der Funktion oder des Ansatzes nicht auszureichen, da ich bisher keine korrekten Ergebnisse erhalte.

Ich wäre euch sehr dankbar, wenn ihr mir dabei helfen könntet, den richtigen Ansatz zu finden!

Vielen Dank im Voraus!

Hi Dominic,
ich vermute mal du hast eine 1:N Relation, da würde ich dann die Appointments Tabelle platzieren und dort die Infos aus der oberen Tabelle (ConfigurationsItems) ausgeben, dann hast du auch nur Datensätze welche in Appointments vorhanden sind, also sowas wie hier Kunde und Bestellung.

Von der unteren N Tabelle hast du auch Zugriff auf die Felder der Muttertabelle.

Hallo Erdal

Danke für die schnelle Antwort. Ja es ist eine 1:N Beziehung. Das Problem ist eben, dass ich die Configurationitems ohne Appointment ausgeben möchte. Um bei deinem Beispiel zu bleiben die Kunden ohne Orders. Irgendwie muss ich von der Muttertabelle die Untertabelle abfragen ob die entsprechende ID vorhanden ist oder nicht.

Hast du für deine Datenquelle native Aggregatsfunktionen zur Verfügung? Dann könntest du per NativeCount() die Zahl der Unterelemente abfragen und so den Filter bestimmen. Ansonsten würde mir noch ein Zweipassverfahren einfallen, bei dem du dir im ersten Pass merkst, welche Items Unterelemente haben und das im zweiten Pass für den Filter verwendest. Da musst du dich mal ein bisschen einlesen :slightly_smiling_face:.

Hallo Jochen
Ich konnte mir das einlesen ersparen :sweat_smile: denn mit der NatvieCount() hat es funktioniert.
If(NativeCount(Appointments.ConfigurationItemId, ConfigurationItems.Id = Appointments.ConfigurationItemId) > 0, false, true)

So kann ich die Einträge filtern.

Vielen Dank euch für die Hilfe und den Support!

Grüsse

Dominic

1 Like