【问题标题】:SQL join - one column serving as ID for two columns in another tableSQL 连接 - 一列用作另一表中两列的 ID
【发布时间】:2023-03-27 21:50:01
【问题描述】:

好吧,也许我在这背后的思考过程上完全搞砸了,我需要换个位置,或者我离得不远了。

我有一个名为 TEAMS 的表,其中包含两列:teamID 和 teamName。然后我有另一个名为 WEEK12 的表,其中包含三列:gameID、homeID 和 awayID。

我想也许我可以在 WEEK12 表的 homeID 和 awayID 列中使用 teamID,然后将其与 TEAMS 表连接以将这两列与团队名称匹配。不幸的是,我没有运气。我可以加入并获得与 homeID 或 awayID 匹配的团队名称,但我不能两者都做。

非常感谢任何帮助!

【问题讨论】:

  • 您能否发布您尝试过的脚本。两个表之间至少需要一个公共列。 TEAMS.teamID 和 WEEK12.homeID 一样吗??
  • 顺便说一句,我认为你的数据库设计有问题。拥有一个名为 WEEK12 的表意味着您有表 WEEK11、WEEK13 等。我认为将表更改为 WEEKS 并将 WeekNumber 作为该表的列会是一个更好的设计
  • @cha - 这是一个非常非常好的主意。谢谢。

标签: mysql sql database database-design


【解决方案1】:
SELECT w.gameID,
       h.teamName AS 'Home Team',
       a.teamName AS 'Away Team' 
FROM WEEK12 AS w 
     LEFT JOIN TEAMS AS h 
               ON w.homeID=h.teamID 
     LEFT JOIN TEAMS AS a 
               ON w.awayID=a.teamID

【讨论】:

    【解决方案2】:

    您应该能够在同一个查询中两次加入同一个表。性能下降(查找次数的两倍),但它应该可以工作。

    SELECT home.teamName as homeTeam, away.teamName as awayTeam, week.gameID
    FROM week12 week
    INNER JOIN teams home ON week.homeID = home.teamID
    INNER JOIN teams away ON week.awayID = away.teamID
    

    【讨论】:

      猜你喜欢
      • 2021-11-28
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2021-09-22
      • 2021-05-30
      • 2017-06-03
      相关资源
      最近更新 更多