tnoppeney
I'm new here

Query: Werte aus Fremdschlüsselbeziehung

Hallo zusammen,

wir haben folgende Datenstruktur:

- Tabelle A und Tabelle B sind mit einer N:M Beziehung miteinander beknüpft.

- Einträge in Tabelle A haben eine Liste X von Einträgen aus Tabelle B.

- Einträge in Tabelle B haben eine Eigenschaft Y.

Wir wollen nun eine Abfrage erstellen, die alle Einträge aus Tabelle A liefert, deren Liste X nur Einträge enthält, deren Eigenschaft Y einem bestimmten Wert entspricht.

Wenn wir <EQ attribute="X.Y" value="abc" datatype="java.lang.String" /> nutzen, dann bekommen wir alle Einräge aus Tabelle A, in deren Liste X min. ein Eintrag existiert, dessen Eigenschaft Y dem gewünschten Wert entspricht. Die anderen möglichen Werte von Y per <NEQ... zu verbieten, hat nicht funktioniert.

Geht das überhaupt?


Grüße und Danke

0 Kudos
3 Replies
kohlbrecher
Crownpeak employee

Hallo Herr Noppeney,

um Ihr gewünschtes Ergebnis zu erhalten, müssen Sie von der Tabelle B ausgehen. Sie holen sich alle Einträge der Tabelle B, bei denen die Eigenschaft Y wie gewünscht ist. In den Ergebnissen können Sie dann auf die Liste von Einträgen aus der Tabelle A zugreifen. Der Haken an dem Ergebnis ist dann nur, dass Einträge aus Tabelle A doppelt vorkommen können. Deshalb ist es notwendig über die Ergebnisse zu iterieren und doppelte zu filtern, falls dies notwendig ist.

Grüße

Jan

0 Kudos

Das ist wahrscheinlich nicht das gewünschte.

Das muss über eine Unterabfrage gelöst werden (in SQL: "WHERE x NOT IN (SELECT ...)").

[EDIT]

Hier ein (zugegegeben sinnfreies) Beispiel für das Demo-Projekt "Mithras Energy":

<QUERY entityType='Jobs'>

   <NOT_SUBSELECT attribute='fs_id' subattribute='fs_id'>

        <QUERY entityType='Jobs'>

            <EQ attribute='fs_id' value='577'/>

        </QUERY>

    </NOT_SUBSELECT>

</QUERY>

Peter
0 Kudos

Hallo,

da dieser Thread seit über drei Monaten keine weiteren Antworten mehr erhalten hat, gehe ich davon aus, dass die Antworten von Jan und Peter zu einer Lösung der ursprünglichen Frage geführt haben. Ich kennzeichne den Thread daher als beantwortet.

Sollte die ursprüngliche Fragestellung wider Erwarten doch noch bestehen, bitte noch einmal melden.

Viele Grüße

Michaela

0 Kudos