2013-10-03 53 views
5

以下查询给出了exp_judging表中exp_judging表中有多少行,其中pre_字段中值为1,exp_submissions中也有一个匹配列,member_group为5忽略COUNT中的重复行

SELECT COUNT(*) AS count_result 
    FROM exp_judging AS jud 
    LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id 
    WHERE jud.pre = 1 
     AND sub.member_group = 5 

这个伟大的工程。但是,将来在'exp_judging'表中会有多行具有相同的'rel_id'。

我如何可以确保只有每行的一个进行计数?

我尝试添加GROUP BY到结束,但它只是示出了1个结果然后,代替4-之前。 (有没有重复尚未)

GROUP BY jud.rel_id 

编辑:

曾尝试以下,但仍然只是说明1:

SELECT COUNT(DISTINCT jud.rel_id) AS count_result 
FROM exp_judging AS jud 
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id 
WHERE jud.pre = 1 
AND sub.member_group = $member_group 
GROUP BY jud.rel_id 

回答

14

使用COUNT(DISTINCT rel_id)而不是COUNT(*)

+0

谢谢马哈茂德。添加了一个编辑我的问题,这仍然只是显示1,它应该是4. – ccdavies

+0

好吧,我想我只是单击...没有GROUP BY? – ccdavies

+0

@ccdavies - 是的,没有'GROUP BY'组会得到不同的结果,而不是统计它们全部,删除它。 –

0

试试下面的查询

SELECT COUNT(jud.rel_id) AS count_result 
FROM exp_judging AS jud 
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id 
WHERE jud.pre = 1 
    AND sub.member_group = 5 
group by jud.rel_id