Wie mache ich folgende Abfrage..
-
In einer Antrags-Tabelle habe ich die Spalten: AntragID(p), ProjektID, Status, UserID.
Meine Bedingung:
Gebe mir alle UserIDs, die:
für das Projekt 2 einen Antrag gestellt haben, mit der Status = 'ok' UND
für das Projekt 1 einen Antrag gestellt haben, mit der Status = 'nok'Ansatz:
SELECT userid FROM request
WHERE (projectid = 2 and state = 'ok')
AND (project_id = 1 and state = 'nok')Erwartetes Ergebnis:
Bei der ersten Bedingung müßte ich 5 erhalten.
Beim zweiten 3 und 5.
Somit muß ich bei beiden 5 bekommen.Klappt leider nicht!
Hat jemand ne Idee?
-
Pro Datensatz kann Status nur 'ok' oder 'nok' sein. Niemals beides gleichzeitig. Somit kann dein AND niemals einen Treffer bringen, weil immer nur eine der beiden Bedingungen erfüllt sein kann.
Probiers mal so:
select userid from request where project_id = 2 and state = 'ok' and userid in (select userid from request where project_id = 1 and state = 'nok)
-
genial
ich wollte auch nur verdeutlichen was ich vor habe. das es nicht so -wie ich gepostet habe- funktioniert, habe ich ja schon festgestellt.
danke!