我的SQL Count()0只有1个表

时间:2013-04-07 00:58:31

标签: mysql

所以我已经看到这个用多个表完成,但是对于如何使用多个表感到困惑。我想选择锦标赛中正确参赛作品的数量。这是有效的,除非用户没有权利。然后它返回NULL。我想让它返回0。

Table-tournament_entries

Column  
=============       
id      
tournament_id           
game_id 
user_id 
username    
prediction      
correct 

这是我运行的查询,我希望即使那些没有得到任何问题的用户也可以返回所有用户。

SELECT 
  tournament_id, username, user_id, COUNT(`prediction`)
FROM 
  tournament_entries
WHERE 
  correct = 1 AND tournament_id = 1
GROUP BY 
  username
ORDER BY 
  COUNT(`prediction`) DESC
LIMIT 0,10

编辑:很抱歉所有的混乱,所以当我运行我的查询时,我得到了这个

username    user_id     CorrectAns
mj          455              10
charlie     1                8
bill        2                8
doug        51               7

但是有些用户没有显示谁收到0权利。当我运行查询建议时,我会收到一些问题。

username    user_id     CorrectAns
mj          455              16
charlie     1                16
bill        2                16
doug        51               16
sydney      452              16
Joe         218              16

如果你注意到sydney和joe不在第一个输出中但在第二个输出中

2 个答案:

答案 0 :(得分:1)

使用此查询:

$query ="SELECT tournament_id, username, user_id, COALESCE(COUNT(`prediction`),0) as cpred
FROM tournament_entries
WHERE tournament_id = 1
GROUP BY username
ORDER BY cpred DESC
LIMIT 0,10"

COALESCE将返回给定的第一个非null参数。

干杯。

答案 1 :(得分:0)

根据您对其他答案的评论,我认为您实际需要的是这样的事情(虽然没有样本数据和输出很难确定):

SELECT 
  username, user_id, Sum(correct) As TotalCorrect
FROM 
  tournament_entries
WHERE 
  tournament_id = 1
GROUP BY 
  username, user_id
ORDER BY 
  TotalCorrect DESC
LIMIT 0,10