mysql - SQLzoo JOIN 教程 #13

标签 mysql sql join

我一直在研究 SQLzoo 问题,但在 JOIN 教程问题 #13 中的最后一个问题上遇到了麻烦 - 列出每场比赛以及每个团队的得分,如图所示。

链接:http://sqlzoo.net/wiki/The_JOIN_operation

在他们给出的示例代码中,它使用了一个案例。我是这样修改的:

SELECT game.mdate, game.team1,
  CASE WHEN goal.teamid=game.team1 THEN 1 ELSE 0 END score1, game.team2,
  CASE WHEN goal.teamid=game.team2 THEN 1 ELSE 0 END score2
  FROM game, goal WHERE game.id=goal.matchid
GROUP BY game.mdate, goal.matchid, game.team1, game.team2

他们建议对 score1/score2 使用 SUM 函数将提供答案。我对如何在 SQL 中创建的这两列上使用 SUM 函数感到困惑。

任何人都可以提供有关如何以更好的方式编写此 SQL 查询的宽泛术语的提示吗?

最佳答案

这对我有用,可以更正左连接。

SELECT mdate, team1,
SUM(CASE WHEN teamid = team1 THEN 1 ELSE 0 END) score1,
team2,
SUM(CASE WHEN teamid = team2 THEN 1 ELSE 0 END) score2
FROM game LEFT JOIN goal ON matchid = id GROUP BY mdate, matchid, team1, team2

关于mysql - SQLzoo JOIN 教程 #13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439874/

相关文章:

mysql - 仅当尚未选择时才从已连接的连接表中进行选择

mysql - 如果当前时间在行的开始时间和结束时间之间,则检索行

mysql - 检查 MySQL 查询的 varchar 列中不是数字的行

sql - Postgresql 加入 2 个具有 km 范围的表

MySQL 按用户名和以下表选择数据

php - 每10分钟从MySql表中获取数据

php - 针对另一列的每个成员搜索一列

sql - 如何转义传递给 Oracle SQL 脚本的参数中的值

mysql - 多个 ON 和 JOIN

javascript - Highcharts xaxis 偏离了几个小时