首页 > 解决方案 > 2个内部连接到其他表上的相同数据

问题描述

我有点卡在我对此的理解中

我有 2 张桌子......“游戏”和“团队”

**teams**

teamID,teamName
1, Bears
2, Steelers
3, Giants
4, Bengals
...


**Games**

gameID,awayTeamID,homeTeamID
10, 1,2
20, 3,4

我正在尝试编写一个查询,我将在其中返回比赛,但也带回主队和客队的球队名称(或者甚至“代替”,因为我实际上不需要最终查询中的 ID)

我尝试了 INNER JOIN,如果我链接 .. 'games.homeTeamID=teams.teamID' 那么它将成功地将 teamID 带回我的查询中......但是,我需要对 'awayTeamID' 做同样的事情,所以我尝试了 2内连接

SELECT * FROM games INNER JOIN teams on games.awayTeamID=teams.teamID  INNER JOIN teams on games.homeTeamID=teams.teamID 

但是当我尝试加入同一个项目两次时,我自然会得到一个 SQL 错误

#1066 - 不是唯一的表/别名:'teams

.. 我希望我的查询结果看起来像这样

gameID,awayTeamID,homeTeamID,awayTeamNAME,homeTeamNAME,
10, 1,2,Bears, Steelers
20, 3,4,Giants,Bengals

或者

gameID,awayTeamNAME,homeTeamNAME,
10,Bears, Steelers
20,Giants,Bengals

...当然awayTeamNAMEhomeTeamNAME 还不存在,所以这是一个问题 :-)

抱歉,如果这是一个非常简单的问题,但有谁知道我如何为 2 个不同的结果对象引用团队表中的同一项目?

任何帮助将不胜感激

标签: mysqlsql

解决方案


几个表别名应该可以解决您的问题。

SELECT * 
FROM games 
INNER JOIN teams AS awayTeam
  on games.awayTeamID=awayTeam.teamID  
INNER JOIN teams AS homeTeam
  on games.homeTeamID=homeTeam.teamID 

推荐阅读