【问题标题】:mysql join 2 tables - but have to join same table twicemysql加入2个表 - 但必须加入同一个表两次
【发布时间】:2017-06-17 21:46:01
【问题描述】:

我正在为我的联盟制定垒球赛程。我有一个 TEAMS 表和一个 GAMES 表。 TEAMS 是 id 和 team_name。 GAMES 表有日期、时间、home_team(与 TEAMS 表 id 相关)和 away_team(与 TEAMS 表 id 相关)。

我想从 GAMES 表中选择所有比赛,但不是 home_team 和 away_team 显示球队的 id,而是显示 TEAMS 表中的 team_name。

这是我的查询,但有问题...

SELECT games.date, games.time, games.home_team, 
games.away_team, teams.team_name FROM games JOIN teams ON games.home_team=teams.id 
JOIN teams on games.away_team=teams.team;

1066 - 不是唯一的表/别名:团队

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    您需要使用表别名。所以,你会有这样的事情:

    SELECT games.date, games.time, games.home_team, games.away_team, teams1.team_name 
    FROM games 
       JOIN teams AS teams1 ON games.home_team=teams1.id 
       JOIN teams AS teams2 ON games.away_team=teams2.team;
    

    【讨论】:

    • 这是一个完全不相关的问题。您的问题是关于在多个联接中重用同一个表,这就是您的做法。它与尝试执行查询无关,鉴于您的表的内容,该查询不会产生任何结果。
    • 我制作了三个屏幕截图 - teams - 我的团队表格中有什么。 games - 我的游戏表中有什么,然后这是我想要返回的示例(我只是对它进行了Photoshop)desired_results。我是这方面的新手,我只是想学习一些后端知识,这样我就可以尝试填补我工作中的空缺职位
    【解决方案2】:

    哇哦,我明白了!!!!这里需要列别名和表别名!!!!!!我不敢相信我做到了!

    选择 g.day, g.date, g.time, t.team_name AS away_team, t2.team_name AS home_team 来自 GAMES 加入球队 away_team = t.id 在 home_team = t2.id 上以 t2 的身份加入团队

    【讨论】:

      【解决方案3】:

      是的,因为您将两次加入同一个表,因此您必须提供不同的表别名

      SELECT games.date, games.time,
      t.team_name as home_team,
      t1.team_name as away_team 
      FROM games g 
      LEFT JOIN teams t ON g.home_team=t.id 
      LEFT JOIN teams t1 on g.away_team=t1.team
      

      【讨论】:

      • 这里是结果......不是我需要的,但我想我越来越接近了......我希望我能给你看一个结果的屏幕截图,但我得到了所有的日期、时间、home_teams(仍然只显示 id)、away_teams(仍然只显示 id)然后是 teams 表中的 team_name,它有 1 个团队名称,即 home_teams 的实际名称。
      • 在这里您可以找到结果的实际屏幕截图。 link
      • 我实际上在您第一次查询时第一次上传了错误的屏幕截图,对不起。这是它的真正链接:link...我尝试了您编辑的查询,它返回了 0 行....
      • 我制作了三个屏幕截图 - teams - 我的团队表格中有什么。 games - 我的游戏表中有什么,然后这是我想要返回的示例(我只是对它进行了 photoshop)desired_results。感谢您的所有帮助。
      • 您可能希望将联接改为左联接
      猜你喜欢
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多