Ich versuche, eine Abfrage auszuführen, die die EXIST-Klausel verwendet:Funken Ersatz für VORHANDEN und IN
select <...>
from A, B, C
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
exists (select A.ID from <subquery 1>) or
exists (select A.ID from <subquery 2>)
Leider scheint dies nicht unterstützt werden. Ich habe auch die EXISTS
Klausel mit einer IN
Klausel versucht zu ersetzen:
select <...>
from A, B, C
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
A.ID in (select ID from ...) or
A.ID in (select ID from ...)
Leider auch die IN
Klausel scheint nicht unterstützt zu sein.
Irgendwelche Ideen, wie ich eine SQL-Abfrage schreiben kann, die das gewünschte Ergebnis erzielt? Ich konnte die WHERE
Klausel als eine andere JOIN
und die zweite OR
Klausel als UNION
grundsätzlich modellieren, aber es scheint Super ungeschickt ..
EDIT: eine Reihe möglicher Lösungen auflistet.
Lösung 1
select <...>
from A, B, C
(select ID from ...) as exist_clause_1,
(select ID from ...) as exist_clause_2,
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
A.ID = exist_clause_1.ID or
A.ID = exist_clause_2.ID
Lösung 2
select <...>
from A, B, C
((select ID from ...) UNION
(select ID from ...)
) as exist_clause,
where
A.FK_1 = B.PK and
A.FK_2 = C.PK and
A.ID = exist_clause.ID
Sollte Ihre allererste Abfragevorlage EXISTS-Aufrufe der Form 'exists 'nicht haben (wählen Sie E.ID aus E mit E.ID = A.ID)' '? –
philipxy