2016-05-23 3 views
1

私は4つの異なるテーブルからデータを取得しています。これは私がやった方法です:私が取得することで、mysqlで重複のないフィルタリング

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を削除すると、私が手

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 

予想答えがあります正解。しかし、私がそれらを含めると、私は間違ったものを取得します。しかし、私はそれも表示したい。正しい出力を得るためにはどうすればよいですか?これには何が問題なのですか?

答えて

0

使用

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

私はそれを使用してみましたが、私は、すべてのIDの2番目の列に1を得ました。 – SSS

+0

何が必要ですか? 'DISTINCT'には正しい表現を使用してください。 – mnv

+0

私は両方の場所、つまり2行目と3行目で使用しましたが、同じ結果が出ます。 – SSS