2016-03-24 5 views
2

У меня есть запрос MySQL в PHP, где я получаю все различные значения, а затем получать суммы связанных столбцов этих различных значений, как это:Как выбрать все различные значения, кроме одного в MySQL?

SELECT t.`fruits`,sum(coalesce(s.amount,0)),sum(coalesce(s.price,0)) 
FROM(SELECT DISTINCT `fruits` FROM `accouts`) t 
LEFT OUTER JOIN `accounts` s 
ON(t.`fruits` = s.`fruits` AND s.`userid` = 1 
AND s.`date` BETWEEN "2010-11-01" AND "2015-12-22") 
GROUP BY t.`fruits` 

Как я могу исключить определенное определенное значение из этого запроса? В частности, если столбец «фрукты» пуст? Поскольку это возвращает данные:

Oranges - 23 - 43 
Pears - 33 - 55 
     - 12 - 13 
Grapes - 54 - 76 

Я хочу исключить отчетливую строку, где «фрукты» пустые. Как я могу это сделать?

+1

ли вы пытались добавить 'WHERE' условие на этом поле? 'WHERE t.fruits NOT NULL' или' WHERE t.fruits <> "" '? – fpietka

+1

add: И t.'fruits' не является NULL - в том, где пункт –

+1

Add AND t.fruits НЕ НЕТ – Veniamin

ответ

1

Попробуйте это:

SELECT t.`fruits`,sum(coalesce(s.amount,0)),sum(coalesce(s.price,0)) 
FROM(SELECT DISTINCT `fruits` FROM `accouts`) t 
LEFT OUTER JOIN `accounts` s 
ON(t.`fruits` = s.`fruits` AND s.`userid` = 1 
AND s.`date` BETWEEN "2010-11-01" AND "2015-12-22") 
WHERE t.`fruits` != '' 
GROUP BY t.`fruits` 
+0

Это работает! Спасибо огромное! Не могли бы вы объяснить мне, почему вы не можете добавить предложение WHERE перед соединением? –

+0

О, я вижу. Спасибо :) –

+1

, но вы можете добавить WHERE в конце запроса DISTINCT - ... FROM (SELECT DISTINCT 'fruit' FROM' accouts WHERE 'fruits'! = '') –

Смежные вопросы