mysql加入2个表 - 但必须加入同一个表两次
Posted
技术标签:
【中文标题】mysql加入2个表 - 但必须加入同一个表两次【英文标题】:mysql join 2 tables - but have to join same table twice 【发布时间】: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 - 不是唯一的表/别名:团队
【问题讨论】:
【参考方案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。感谢您的所有帮助。 您可能希望将联接改为左联接以上是关于mysql加入2个表 - 但必须加入同一个表两次的主要内容,如果未能解决你的问题,请参考以下文章