2016-05-23 23 views
1

Ich hole Daten aus vier verschiedenen Tabellen. Dies ist, wie ich getan habe:Filtern ohne Duplikate in Mysql

select value_split.id, 
count(invoice_request.id) as counts, 
GROUP_CONCAT(`category`.`category_name`) as `category_name` 
from value_split 
left join invoice_request 
on invoice_request.id = value_split.id 
and MONTH(invoice_request.from_date) = '05' 
and YEAR(invoice_request.from_date) = '2016' 
and invoice_request.status = '1' 
left join `category_value` on value_split.id = category_value.id 
left join `category` on category_value.category_id = category.category_id 
where MONTH(value_split.date) = '05' 
and YEAR(value_split.date) = '2016' 
group by value_split.id, value_split.date 
limit 0, 2147483647 

Die erwartete Antwort lautet:

id|counts|category_name 
1 | 1 | service, drop 
2 | 2 | drop 
3 | 1 | service 

Aber, was ich bekommen ist:

id|counts|category_name 
1 | 5 | service, drop 
2 | 4 | drop 
3 | 5 | service 

Wenn ich Zeile 10 zu entfernen und 11, erhalte ich die korrekte Antwort. Aber wenn ich sie einschließe, bekomme ich die falsche. Aber ich möchte das auch zeigen. Also, was soll ich tun, um die richtige Ausgabe zu bekommen? Was ist daran falsch?

Antwort

0

Verwenden

COUNT(DISTINCT invoice_request.id) AS counts, 
+0

habe ich versucht, es zu benutzen, aber ich habe 1 in der zweiten Spalte für alle IDs. – SSS

+0

Welche Anzahl benötigen Sie? Verwenden Sie den rechten Ausdruck für "DISTINCT". – mnv

+0

Ich habe es an beiden Orten benutzt, also sowohl in Zeile 2 als auch in 3. Aber ich gehe das gleiche Ergebnis. – SSS