mysql - 2 内部连接到其他表上的相同数据

标签 mysql sql

<分区>

我有点卡在我的理解中

我有 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 个 INNER JOINS

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 个不同的结果对象引用 teams 表中的相同项目?

任何帮助将不胜感激

最佳答案

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

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

关于mysql - 2 内部连接到其他表上的相同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57663841/

相关文章:

php - 通过 PHP 插入 MySQL 数据库只工作了一半

php - 表格的第一行未显示在下拉列表中

c# - 如何从 SQL 检索数据并将其显示到 Aspx Web 表单

mysql - 插入表中,从另一个表中获取信息

mysql - case 和 order by - 如何指定某些内容应显示在列表末尾?

mysql - 根据 MySQL 中另一个表中的值从表中选择

PHP MySql Real Escape 字符串不工作

c# - 使用 C# 将字节转换为图像时出现 "parameter is not valid"

mysql - 选择未加入的记录以及已加入的记录

php - 我使用 if else then 的语法有错误