MySQL,在同一个查询中使用连接表两次

时间:2016-01-05 23:05:42

标签: mysql join

我正在尝试编写一个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数据库上尝试过这些解决方案。

任何想法?感谢所有人的帮助。

2 个答案:

答案 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