2013-12-11 86 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