mysql - 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
...当然awayTeamNAME和homeTeamNAME 还不存在,所以这是一个问题 :-)
抱歉,如果这是一个非常简单的问题,但有谁知道我如何为 2 个不同的结果对象引用团队表中的同一项目?
任何帮助将不胜感激
解决方案
几个表别名应该可以解决您的问题。
SELECT *
FROM games
INNER JOIN teams AS awayTeam
on games.awayTeamID=awayTeam.teamID
INNER JOIN teams AS homeTeam
on games.homeTeamID=homeTeam.teamID
推荐阅读
- python - 尝试解决 Python 1-D 偏微分方程求解器中的问题
- python - 具有相同字符串的两个不同打印结果
- ios - 打开 Package.swift 或 generate-xcodeproj
- python - Python 多处理模块 join() 方法不会阻止解释器在进程完成之前执行代码
- r - 从文件夹中加载多个文件作为循环
- java - 将线程级局部变量从一个类传递到另一个类
- python-3.x - Python 3.8.2:filedialog.askopenfilename 和 ttk.Entry 冲突
- reactjs - React-hook-form 提交和 useState 问题
- openid-connect - Azure AD B2C 中一组用户的自定义访问令牌生命周期
- regex - 正则表达式的 NFA ^[a-zA-Z0-9]{3,16}$