所以我已经看到这个用多个表完成,但是对于如何使用多个表感到困惑。我想选择锦标赛中正确参赛作品的数量。这是有效的,除非用户没有权利。然后它返回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不在第一个输出中但在第二个输出中
答案 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