MySQL - как исключить результаты со значением NULL? (с кодом) - PullRequest
2 голосов
/ 02 апреля 2011

Это мой код SQL

SELECT p.plant_name, 
       sum(data.value_1) totalvalue_1
  FROM (SELECT DISTINCT date_format(date, '%Y-%m') ym 
          FROM data 
         WHERE data.id_fk = 1 
           AND date BETWEEN '2011-01-01' AND '2011-04-01') dates
CROSS JOIN (SELECT DISTINCT data.id_fk, 
                   data.plant_id_fk 
              FROM data 
             WHERE data.id_fk = 1) up
      JOIN plants p ON p.plant_id = up.plant_id_fk
 LEFT JOIN data ON date_format(data.date, '%Y-%m') = dates.ym
               AND up.id_fk = data.id_fk
               AND up.plant_id_fk = data.plant_id_fk
               AND category_1 = 'expenses'
  GROUP BY up.plant_id_fk
  ORDER BY up.id_fk, up.plant_id_fk

который выводит этот результат

aasd    74
qweqwe  20
tyutyu  NULL
bnmbnm  NULL
234234  NULL

Я хотел бы полностью исключить результаты, содержащие NULL, и получить в качестве результата только это:

aasd      74
qweqwe  20

Я пытался использовать is not null в нескольких предложениях, но ни один из них не дал нужного мне результата.

Есть предложения?

1 Ответ

7 голосов
/ 02 апреля 2011

Попробуйте добавить предложение HAVING между GROUP BY и ORDER BY:

 group by up.plant_id_fk
 HAVING SUM(data.value_1) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...