我正在尝试编写一个MySQL查询,将同一个表中的两列连接到另一个表。我查看过很多例子并尝试了很多东西,其中大多数只是因为某种原因而出错。
我有一个Teams表:
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和SequelPro的MAMP中的mySQL数据库上尝试过这些解决方案。
任何想法?感谢所有人的帮助。
答案 0 :(得分:0)
使用您创建的别名。这将允许您加入Team Table两次,但不会混淆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
答案 1 :(得分:0)
已经解决了,谢谢你的帮助。看起来我在示例中让自己感到困惑!替换。团队.Name的所有人似乎都很好。
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