双内连接有3个表

时间:2014-04-06 22:36:14

标签: sql left-join

多年后更新:

我回来回答我自己的问题。我不知道内部联接是什么,显然完全滥用了这个术语。


我目前有以下3个表格:

团队

TeamID

播放器

PlayerID | TeamID

匹配

Player1 | Player2 | Round

我想写一个显示匹配的查询:

Team1 | Team2

我想出了如何加入我的桌面玩家和匹配,到目前为止也有效,但我无法弄清楚如何用球队名称替换球员名称。任何的想法?我有以下内容:

SELECT P1.PlayerID AS Player1, P2.PlayerID AS Player2
FROM MATCH
INNER JOIN PLAYER AS P1 ON MATCH.Player1 = P1.PlayerID
INNER JOIN PLAYER AS P2 ON MATCH.Player2 = P2.PlayerID

1 个答案:

答案 0 :(得分:0)

几年后,我又回到了这个问题。

假设有以下表格:

团队

id | name

播放器

id | team_id

匹配

player1_id | player2_id | round

我想要的结果是类似的

player1's team name | player2's team name | round

我最初使用的是distinct,但正如Turophile正确指出的那样,distinct不是删除重复项的正确方法。

更好的查询应该是

select t1.name, t2.name, m.round
from match as m
left join player as p1 on m.player1_id = p1.id
left join team as t1 on p1.team_id = t1.id
left join player as p2 on m.player2_id = p2.id
left join team as t2 on p2.team_id = t2.id