2013-12-11 89 views
1

我试图加入MySQL中的两个表。这里是我的表:MySQL内部加入两个表之间

游戏台

GameID  Date/Time   PlayerOneID PlayerTwoID 
13 12/10/2013 10:53:29 PM  1    2  
14 12/10/2013 10:57:29 PM  1    2 
15 12/10/2013 10:58:29 PM  2    1 

我还有一个表包含玩家的ID和球员的名字。

玩家表

1 Dan 
2 Jon 

我希望得到的表如下所示:

GameID  Date/Time   PlayerOneID PlayerTwoID 
13 12/10/2013 10:53:29 PM  Dan  Jon  
14 12/10/2013 10:57:29 PM  Dan  Jon 
15 12/10/2013 10:58:29 PM  Jon  Dan 

这里是我目前在做什么:

SELECT Games.GameID, Games.`Date/Time`, Players.Name, PlayerTwoID 
FROM Games 

INNER JOIN Players 
ON PlayerOneID = Players.ID 

这会得到PlayerOnes的名字,但我找不到PlayerTwos名称也是如此。我试过使用两个INNER JOINS,但是这没有奏效。我已经在堆栈上阅读了很多帖子,但我还没有遇到任何可行的解决方案。我是MySQL的新手,所以后续解释会非常有帮助。

回答

2

你在正确的轨道上,你需要加入到Players表两次,就像这样:

SELECT Games.GameID, Games.`Date/Time`, p1.Name, p2.Name 
FROM Games 
INNER JOIN Players p1 
ON PlayerOneID = p1.ID 
INNER JOIN Players p2 
ON PlayerTwoID = p2.ID 

什么,你可能错过了用别名(P1,P2)在两者之间进行区分您要加入的Players表的副本。

+0

谢谢!这真的很奇怪,但..我已经尝试过,并没有奏效。难道是因为我使用了Players.Name,Players.Name而不是p1.Name,p2.Name? – Jonathan

+0

@Jonathan - 哈,哟,只是更新我的答案,以表明这一点。 –

+0

现在有道理。谢谢您的帮助! – Jonathan

0
select GameID, p1.name playerOneName,p2.name playerTwoName from 
games inner join players p1 on games.playerOneID=p1.id 
inner join players p2 on games.playerTwoID=p2.id 
order by GameID asc; 

the terminal execution result is shown