【问题标题】:Multiple joins in single query单个查询中的多个联接
【发布时间】:2018-05-21 12:27:12
【问题描述】:

为梦幻足球联赛编写代码。有两张桌子

  1. Player_details

    列 - ID,PLAYER_NAME,POINTS

  2. USERS

    列 - id,palyer1,player2,player3,........Player11,

用户创建帐户,选择团队中的 11 名球员。球队总分是球员从球员详情表中获得的积分总和。

我想获得每个用户的总数。我举个例子:

USER       player1    player2   player3  Player4 ... ..... ...Player11  Total 

User1        a         b          c        d                      j
user2        d         a          e        b                      k

。 . .

a,b,c.... 是玩家表中的玩家姓名。现在在总列中,我想获得玩家 a、b、c、d、...j 为 User1 得分的总和。

对于用户 2、用户 3、用户 4 也是如此。

任何帮助将不胜感激。

【问题讨论】:

  • 抱歉,您甚至没有问任何问题。这看起来更像是家庭作业,会让你成为一个懒得做家庭作业的人。
  • 这张桌子似乎急需重新设计。见规范化

标签: php mysql sql join


【解决方案1】:

这可能会做你想要的。请注意,由于您的表格结构,您必须为团队中的每个玩家进行连接。正如 cmets 中所述,您应该查看 normalisation

SELECT u.id AS User,
  p1.PLAYER_NAME AS Player1,
  p2.PLAYER_NAME AS Player2,
  p3.PLAYER_NAME AS Player3,
  p4.PLAYER_NAME AS Player4,
  p5.PLAYER_NAME AS Player5,
  p6.PLAYER_NAME AS Player6,
  p7.PLAYER_NAME AS Player7,
  p8.PLAYER_NAME AS Player8,
  p9.PLAYER_NAME AS Player9,
  p10.PLAYER_NAME AS Player10,
  p11.PLAYER_NAME AS Player11,
  p1.POINTS + p2.POINTS + p3.POINTS + p4.POINTS + p5.POINTS + p6.POINTS + p7.POINTS + p8.POINTS + p9.POINTS + p10.POINTS + p11.POINTS AS Total
FROM USERS u
JOIN Player_details p1 ON p1.ID = u.player1
JOIN Player_details p2 ON p2.ID = u.player2
JOIN Player_details p3 ON p3.ID = u.player3
JOIN Player_details p4 ON p4.ID = u.player4
JOIN Player_details p5 ON p5.ID = u.player5
JOIN Player_details p6 ON p6.ID = u.player6
JOIN Player_details p7 ON p7.ID = u.player7
JOIN Player_details p8 ON p8.ID = u.player8
JOIN Player_details p9 ON p9.ID = u.player9
JOIN Player_details p10 ON p10.ID = u.player10
JOIN Player_details p11 ON p11.ID = u.player11

【讨论】:

  • 这解决了您的问题吗?如果没有,请提供更多信息以帮助解决它。否则,请将其标记为已接受。见stackoverflow.com/help/someone-answers
  • 感谢@nick,查询按预期完美运行。我对数据库结构太不满意了。我刚刚开始研究这个幻想联盟,如果被问到你建议的理想数据库结构是什么。我只有用户详细信息,玩过的玩家
  • 这是个好问题。任何结构对于插入和选择都有优点和缺点。如您所见,这种结构对于选择非常不利,但对于插入非常容易。仅具有 user_id、player_number 和 player_id 的用户表结构(因此每个用户在表中将有 11 行)更容易选择(更少的连接)但更难插入。它主要归结为您希望做的最多的操作。最后一种结构还可以更轻松地更改团队中的玩家数量...尝试谷歌搜索问题,您应该会找到更多指导
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2014-09-23
  • 2019-08-07
  • 2018-03-30
  • 2018-01-03
  • 1970-01-01
相关资源
最近更新 更多