当WHERE不匹配时,在COUNT列中显示"0"?

dda*_*dan 5 php mysql count sql-order-by

我想要做的是从表中检索所有数据,并按用户在特定类别中玩的游戏数量来排序.有什么办法可以使用某种"COUNT WHERE"sql语句吗?

这是我到目前为止所拥有的.如果他们在"fps"类别中玩过游戏,它只会返回用户,但是我希望它以降序显示所有用户,即使他们没有玩过fps游戏.请原谅我糟糕的桌子

SELECT user_data.user, COUNT(played_games.game_cat) as 'count'
FROM user_data, played_games
WHERE user_data.user_id = played_games.user_id and played_games.game_cat = 'fps'
GROUP BY user_data.user_id
ORDER BY 'count' DESC;
Run Code Online (Sandbox Code Playgroud)

user_data表

user_id | user

1       | jeff
2       | herb
3       | dug
Run Code Online (Sandbox Code Playgroud)

playing_games表

id | user_id | game | game_cat

1  |    2    | kill | fps
2  |    1    | shoot| fps
3  |    2    | COD  | fps
4  |    3    | dogs | cas
Run Code Online (Sandbox Code Playgroud)

Int*_*ang 1

我就是这样做的。没有子查询,没有 COALESCE,没有 COUNTIF 垃圾。

SELECT `users`.`user`, COUNT(`played_games`.id) AS `c`
FROM `users`
LEFT OUTER JOIN `played_games` ON
`users`.`user_id` = `played_games`.`user_id`
AND `played_games`.`game_cat` = "fps"
GROUP BY `users`.`user_id`
ORDER BY `c` DESC, `user` ASC
Run Code Online (Sandbox Code Playgroud)

SQLFiddle(不确定是否可以像这样链接它们......)