【问题标题】:SQL complicated SELECT querySQL复杂的SELECT查询
【发布时间】:2021-11-06 23:03:26
【问题描述】:

我想要一个选择查询,我可以在其中获取特定用户使用他和对手球队的积分进行的所有游戏。

我的数据库的实体关系模型

这是我当前的查询:

Select playsIn.userId,game.id AS "gameId", plays.won, team.points from game JOIN plays ON plays.gameId = game.id
 JOIN team ON team.id = plays.teamId JOIN playsIn ON team.id = playsIn.teamId WHERE playsIn.userId = 2 

当前查询给了我这个结果:

userId gameId won points
1 1 true 19

问题: 从这个查询中,我只得到我队的积分,但我也想得到另一个队的积分。我不知道如何获得对手的积分。

结果应如下所示:

userId gameId won pointsMyTeam pointsOtherTeam
1 1 true 19 14

注意:一场比赛总是只有 2 支球队。

感谢您的帮助!

【问题讨论】:

  • 到目前为止你尝试过什么?你被困在哪里了?请分享更多详细信息,例如表结构、示例输入数据、与该输入数据对应的预期输出

标签: mysql sql select


【解决方案1】:

听起来您需要加入该游戏的另一个 plays 行,即与游戏 ID 匹配但与团队 ID 不匹配的行:

JOIN plays otherplays ON otherplays.gameId = game.id AND otherplays.teamId <> team.id

然后你可以将它加入到另一个 team 行:

JOIN team otherteam ON otherteam.id = otherplays.teamId

然后你可以选择otherteam.points。顺便说一句,请考虑将points 设为plays 表的列,而不是team 表。通过将points 设为team 的一列,您可以将每支球队限制为只有一个积分值,因此只能参加一场比赛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多