MySQL,在同一查询中使用联接表两次
我试图编写一个MySQL查询,将同一个表中的两列连接到另一个表。我看了很多例子,尝试了很多东西,其中大多数都是因为某种原因而出错的 我有一张桌子:MySQL,在同一查询中使用联接表两次,mysql,join,Mysql,Join,我试图编写一个MySQL查询,将同一个表中的两列连接到另一个表。我看了很多例子,尝试了很多东西,其中大多数都是因为某种原因而出错的 我有一张桌子: ID | Team 1 | Team 1 2 | Team 2 3 | Team 3 4 | Team 4 我有一张游戏桌: ID | Team_1 | Team_2 1 | 1 | 2 2 | 2 | 3 3 | 3 | 4 4 | 4 | 1 我有以下疑问:
ID | Team
1 | Team 1
2 | Team 2
3 | Team 3
4 | Team 4
我有一张游戏桌:
ID | Team_1 | Team_2
1 | 1 | 2
2 | 2 | 3
3 | 3 | 4
4 | 4 | 1
我有以下疑问:
SELECT PIO.Games.id
, Team.Name AS `Team-1`
, Team.Name AS `Team-2`
FROM Games
left
JOIN Team
ON Games.Team_1 = Team.id
left
JOIN Team as T2
ON Games.Team_2 = Team.id
我需要列出比赛并显示球队名称,我希望:
Game_ID Team-1 Team-2
1 | Team 1 | Team 2
2 | Team 2 | Team 3
3 | Team 3 | Team 4
4 | Team 4 | Team 1
但我两次得到一线队:
Game_ID | Team-1 | Team-2
1 | Team 1 | Team 1
2 | Team 2 | Team 2
3 | Team 3 | Team 3
4 | Team 4 | Team 4
到目前为止,我已经花了几个小时在这个问题上,但没有找到任何有效的方法!我想我错过了一些非常简单的东西
我已经在Navicat和sequepro的MAMP中的mySQL数据库上尝试了这些解决方案
有人有什么想法吗?非常感谢您的帮助。请使用您创建的别名。这将允许您两次加入团队表,但不会混淆db引擎
SELECT g.id, t.Name AS Team-1, t2.Name AS Team-2
FROM Games AS g
LEFT JOIN Teams AS t ON g.Team_1 = t.ID
LEFT JOIN Teams AS t2 ON g.Team_2 = t2.ID
已经解决了,谢谢你的帮助。看起来我在这个例子中把自己搞糊涂了!替换。团队替换。名字和一切似乎都很好
SELECT
Games.id,
T1.Name AS "Team-1",
T2.Name AS "Team-2"
FROM Games
left join Team as T1 on Games.Team_1 = T1.id
left join Team as T2 on Games.Team_2 = T2.id
JOIN
子句说明了事实:您有两个“Team”表的实例。第二个别名为“T2”(jointteamast2
),这使得名称“Team”在查询的其余部分中无法识别它。第一个称为“团队”(因为它没有任何别名)。阅读查询的其余部分,想象一下表的第一个实例,它在那里读“Team”,第二个实例,它在那里读“T2”(实际上没有任何地方)。解决方案应该很容易找到:对表的第一个实例使用别名(“T1”),并在查询的其余部分将“Team”替换为“T1”或“T2”。非常感谢,这与我之前尝试的一些方法类似,不幸的是,我在“字段列表”错误中得到一个:“未知列”t.Team。@user1814966表中该列的名称是什么?您在表架构中将Team列为列的名称,但在sql中列为列的名称。它叫什么名字?更新了我的答案,将名称作为列。您需要找出实际的列名是什么,然后填写它。另外,如果表是Teams而不是Team,那么这可能就是问题所在。验证表名和列名是否正确,它应该可以正常工作。