2016-03-24 18 views
2

Ich habe eine MySQL-Abfrage in PHP, wo ich alle unterschiedlichen Werte immer bin und dann die Summen der zugehörigen Spalten dieser unterschiedlichen Werte wie folgt erhalten:Wie wählt man alle eindeutigen Werte außer einem in 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` 

Wie kann ich aus dieser Abfrage einen bestimmten eindeutigen Wert aus? Insbesondere wenn die Spalte "Früchte" leer ist? Weil dies Daten wie folgt zurückgibt:

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

Ich möchte die eindeutige Zeile ausschließen, wo "Früchte" leer ist. Wie kann ich das tun?

+1

Haben Sie versucht, das Hinzufügen einer 'WHERE' Zustand auf diesem Gebiet? 'WO t.fruits NICHT NULL ist 'oder' WO t.fruits <> "" '? – fpietka

+1

add: UND t.fruits' ist nicht NULL - in der Klausel –

+1

Add AND t.fruits IST NICHT NULL – Veniamin

Antwort

1

Try this:

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

Das funktioniert! Ich danke dir sehr! Können Sie mir bitte erklären, warum Sie die WHERE-Klausel nicht vor dem Join hinzufügen können? –

+0

Oh ich verstehe. Danke :) –

+1

aber Sie können das WHERE am Ende der DISTINCT-Abfrage hinzufügen - ... FROM (SELECT DISTINCT 'fruits' VON' accouts WHERE 'fruits'! = '') –

Verwandte Themen