首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,在同一个查询中两次使用联接表

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

Stack Overflow用户
提问于 2016-01-05 23:05:42
回答 2查看 231关注 0票数 0

我试图编写一个MySQL查询,将同一表中的两列连接到另一个表中。我看过许多例子,尝试了很多事情,其中大多数只是因为某种原因而出错。

我有一张团队桌:

代码语言:javascript
复制
 ID | Team
 1  | Team 1
 2  | Team 2
 3  | Team 3
 4  | Team 4

我有张赌桌:

代码语言:javascript
复制
 ID | Team_1 | Team_2
  1  |  1     | 2
  2  |  2     | 3
  3  |  3     | 4
  4  |  4     | 1

我有以下查询:

代码语言:javascript
复制
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

我需要列出比赛的名单和球队的名字,我想:

代码语言:javascript
复制
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

但我要让一队打两次:

代码语言:javascript
复制
 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数据库中尝试了这些解决方案。

有什么想法吗?所有的帮助都感激地感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-05 23:11:34

使用您创建的别名。这将允许您两次加入Table,但不会混淆db引擎。

代码语言:javascript
复制
    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
票数 0
EN

Stack Overflow用户

发布于 2016-01-06 00:08:01

已经解决了,谢谢你的帮助。看上去我在这个例子中把自己搞糊涂了!用.Team代替.Name,一切似乎都很好。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34622870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档