Ich habe die folgenden zwei Tabellen und benötigen eine einzige SQL mit diesen Anforderungen (keine UNION
).SQL dynamische Where-Klausel basierend auf der übergeordneten Tabelle Spalte
Wenn CHECK_CHILD
FALSE
ist, dann geben Sie einfach Zeilen aus der übergeordneten Tabelle zurück. Wenn CHECK_CHILD
TRUE
ist, überprüfen Sie, ob in der Tabelle CHILD eine Referenzzeile vorhanden ist, und geben Sie die Zeile PARENT zurück. Wenn in der Tabelle CHILD keine Referenzzeile vorhanden ist, geben Sie die Zeile PARENT nicht zurück.
PARENT Table
ID INT (PK)
CHECK_CHILD BOOLEAN
CHILD TABLE
ID INT (PK)
PARENT_ID INT (FK)
Beispieldaten:
PARENT Table
------------
ID CHECK_CHILD
1 FALSE
2 TRUE
3 TRUE
CHILD Table
-----------
ID PARENT_ID
1 2
Mit diesen Beispieldaten sollten die Abfrage zuerst zwei Zeilen aus der Master-Tabelle zurück, weil dritte Reihe nicht Referenzreihe in der untergeordneten Tabelle hat.
Blick auf die 'CASE WHEN' Aussage und sehen, ob das Ihren Bedürfnissen entspricht? – Dave
Fügen Sie einige Beispieltabellendaten hinzu und das erwartete Ergebnis! – jarlh
@a_horse_with_no_name - DB2 – gan1975