gpt4 book ai didi

mysql - 查询以获得最近的游戏结果

转载 作者:行者123 更新时间:2023-11-28 23:33:25 24 4
gpt4 key购买 nike

我在 MySQL 数据库中跟踪某些游戏结果。现在我想在一个漂亮的 HTML 表格中打印最新的结果。我有三个表:

persons 表包含游戏的所有参与者。

+-----+---------+
| id | name |
+-----+---------+
| 2 | Jon |
| 3 | Philip |
| 4 | Tom |
| 5 | Joey |
| 6 | Joanna |
+-----+---------+

rounds 表包含有关游戏每一轮的信息。除其他外,比赛进行的那一周。

+-----+------+
| id | week |
+-----+------+
| 1 | 9 |
| 2 | 10 |
| 3 | 11 |
| 4 | 12 |
| 5 | 13 |
+-----+------+

results 表包含每个人和回合的结果。结果列是游戏中的分数。

+------------+----------+--------+
| personId | roundId | result |
+------------+----------+--------+
| 2 | 1 | 2 |
| 4 | 1 | 6 |
| 5 | 1 | 6 |
| 3 | 1 | 10 |
| 2 | 2 | 16 |
| 4 | 2 | 14 |
| 5 | 2 | 5 |
| 3 | 2 | 11 |
+------------+----------+--------+

现在我想每周打印一张球员得分表。我希望我的输出看起来像下表。请注意,如果一名玩家一周未参加,则该单元格应为空。

+------+-----+--------+-----+------+--------+
| Week | Jon | Philip | Tom | Joey | Joanna |
+------+-----+--------+-----+------+--------+
| 9 | 2 | 10 | 6 | 6 | |
| 10 | 16 | 11 | 14 | 5 | |
+------+-----+--------+-----+------+--------+

所以我的问题是:如何获得这样的输出?

这不是重复的。请参阅下面的评论。

最佳答案

所以如评论中所说,你想做一个PIVOT,但是MySQL不支持。

然而,由于您的玩家数量很少且固定,您可以在 GROUP BY 查询中对玩家进行硬编码,如下所示:

SELECT  R.Week, 
SUM(CASE WHEN P.name = 'Jon' THEN S.result END) AS Jon,
SUM(CASE WHEN P.name = 'Philip' THEN S.result END) AS Philip,
SUM(CASE WHEN P.name = 'Tom' THEN S.result END) AS Tom,
SUM(CASE WHEN P.name = 'Joey' THEN S.result END) AS Joey,
SUM(CASE WHEN P.name = 'Joanna' THEN S.result END) AS Joanna
FROM persons P
LEFT JOIN results S ON P.id=S.personId
LEFT JOIN rounds R ON R.id=S.roundId
WHERE R.week IS NOT NULL
GROUP BY R.Week

SqlFiddleDemo

关于mysql - 查询以获得最近的游戏结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36597649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com