Also Leute, versuchen, eine Abfrage zu schreiben, um die Anzahl der Status zu erhalten, wo project_id =? und Status in 'Neu' von ein paar Tischen, also lasst mich das kaputt machen.SQL-Abfrage mit 1 Join und 2 WHERE Klauseln, die nicht alle Datensätze zurückgeben
Ich habe diese drei Tabellen
Case_Status
id case_status
1 New
2 Failed
3. Accepted
Referral
id case_status_id project_id application_id
1 1 1 20
2 2 1 21
Projekt
id name
1 project1
2 project2
Also das ist meine Abfrage
SELECT COUNT(referrals.id) AS count_all, case_statuses.case_status AS counted
FROM "case_statuses" LEFT OUTER JOIN "referrals" ON "referrals"."case_status_id" = "case_statuses"."id"
WHERE "case_statuses"."deleted_at" IS NULL AND (case_statuses.case_status IN ('New') AND referrals.project_id = 1)
GROUP BY case_statuses.case_status;
Das ist mein Ergebnis
count_all counted
1 New
1 Failed
Aber ich dieses Ergebnis erwarten statt
count_all counted
1 New
1 Failed
0 Accepted
Weiß jemand, was mit meiner Anfrage falsch ist, die für alles case_statuses Zählung zeigt wahr?
Dank
Sie bekommen wirklich "NEU" in den Ergebnissen? case_statuses.case_status NOT IN ('New') in der WHERE-Anweisung sollte bedeuten, dass Sie sie nicht erhalten, weil Sie diesen Status ausdrücklich ausschließen. – Matt