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!


Anmelden zum Antworten