2017-01-29 2 views
0

Ist es möglich, nur einen bestimmten Wert anzuzeigen, wenn eine SUM-Abfrage ausgeführt wird? Zum Beispiel habe ich eine business_user Tabelle und eine campaigns Tabelle für eine Wohltätigkeitsorganisation.Gibt es eine Möglichkeit, eine Zeile NUR in SQL anzuzeigen, wenn SUM einen bestimmten Wert zurückgibt?

Wie Sie sehen können, hat Geschäftsbenutzer 2 2 aktive Kampagnen, während Geschäftsbenutzer 1 0 aktive Kampagnen hat.

mysql> select business_id, active from campaigns; 
+-------------+--------+ 
| business_id | active | 
+-------------+--------+ 
|   2 |  1 | 
|   2 |  1 | 
|   1 |  0 | 
+-------------+--------+ 
3 rows in set (0.00 sec) 

mysql> SELECT b.business_id, SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) as active_campaigns 
    -> FROM business_users b, campaigns c 
    -> WHERE b.business_id = c.business_id 
    -> GROUP BY c.business_id; 
+-------------+------------------+ 
| business_id | active_campaigns | 
+-------------+------------------+ 
|   1 |    0 | 
|   2 |    2 | 
+-------------+------------------+ 

Jedes Mal, wenn ich die Abfrage oben ausführen, mag ich die Zeilen mit active_campaigns = 0 zu zeigen, und Zeilen mit einem anderen Wert zu zeigen, nicht. Ist es möglich, dies zu tun?

Antwort

2

hinzufügen HAVING active_campaigns = 0 zum Ende der Abfrage

1
SELECT b.business_id, SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) as active_campaigns 
FROM business_users b, campaigns c 
WHERE b.business_id = c.business_id 
GROUP BY c.business_id 
Having SUM(CASE WHEN c.active = true THEN 1 ELSE 0 END) = 0 
Verwandte Themen