我的 table :
锦标赛
_______________________________________
| id | name | date |
|---------------------------|-----------|
| 12 | mytournament | 2016-01-01|
|---------------------------|-----------|
玩家
________________________
| idt | name | cat |
|-------------------|-----|
| 12 | john | A |
| 12 | bobby | A |
| 12 | anna | B |
| 12 | Fritz | B |
| 12 | george | C |
|-------------------|-----|
我需要一个返回以下内容的查询:
id | name | date | nr of cat A | nr of cat B | nr of cat C
12 | mytournament | 2016-01-01 | 2 | 2 | 1
我在多重计数方面遇到问题...无法弄清楚如何加入查询。
select t.id, t.name, t.date, count(p.cat) as countA from tournaments t join players p on (t.id = p.idt)
但我不知道如何指定它应该只采用 cat = A 的计数以及如何添加 B 和 C 的额外计数。
任何帮助表示赞赏。谢谢
最佳答案
您想要一个经典的数据透视表。因此你的声明应该是这样的:
SELECT t.id, t.name, t.date,
COUNT(
CASE
WHEN p.`cat`='A'
THEN 1
ELSE NULL
END
) AS 'countA',
COUNT(
CASE
WHEN p.`cat`='B'
THEN 1
ELSE NULL
END
) AS 'countB',
COUNT(
CASE
WHEN p.`cat`='C'
THEN 1
ELSE NULL
END
) AS 'countC'
FROM tournaments t
INNER JOIN players p ON t.id = p.idt
GROUP BY t.id;
看看这个 Stack overflow question and its answer了解更多详情。
关于mysql - 加入多个计数的mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129330/