2016-05-23 79 views
1

我從四個不同的表中獲取數據。這是我做的事:在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 

預期的答案是:

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

但是,我得到的是:

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

如果我刪除線10和11,我得到的正確答案。但是,如果我包括他們,我會得到錯誤的。但是,我也想展示它。那麼,我該怎麼做才能獲得正確的輸出?這有什麼問題?

回答

0

使用

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

我嘗試使用它,但我在第二列有1對所有的ID。 – SSS

+0

你需要什麼?爲'DISTINCT'使用正確的表達式。 – mnv

+0

我在兩個地方都使用過它,即在第2行以及第3行。但是,我得到了同樣的結果。 – SSS