2012-05-31 56 views
0

這適用於player1name,但我該如何解決player2name?簡單的MySQL加入

,而我在這,讓我知道,如果你知道任何有用的視覺查詢生成器;)

 

SELECT 
_game.player1, 
_user.username AS player1name, 
_game.player2, 
_user.username AS player2name, 
FROM _game 
LEFT JOIN _user ON _game.player1 = _user.id 
 
+0

順便說一句加入,PLAYER1和player2只是一個playerId – Fredrik

+0

爲什麼player1name和player2name引用相同_user.username柱? 「_headsup」從哪裏來? – codingbiz

+0

因爲我不想將用戶/玩家名存儲在遊戲桌上。所以_user.username包含每個玩家的名字。 – Fredrik

回答

1

我沒有運行MySQL的ATM,但它應該是這樣的。 ..

SELECT 
player1, 
u1.username AS player1name, 
player2, 
u2.username AS player2name, 
FROM _game 
INNER JOIN _user u1 ON _headsup.player1 = u1.id 
INNER JOIN _user u2 ON _headsup.player2 = u2.id 

即加入別名,在select中使用別名。

但是,我不知道_headsup來自哪裏!

+0

這看起來不錯,但沒有括號或GROUP BY,我得到16個副本。無論如何,INNER JOIN在這種情況下非常合適。 – Fredrik

+0

這聽起來像這是SQL的一個片段,所以幾乎可以肯定一個連接或where子句缺失,允許重複通過網絡。 –

+0

不知道到底發生了什麼,但該表有2行,當我複製這個例子時,我得到了18行。 – Fredrik

1
SELECT player1, 
_user.username AS player1name, 
player2, 
_user2.username AS player2name 
FROM _game 
LEFT JOIN _user ON (_headsup.player1 = _user.id) 
LEFT JOIN _user _user2 ON (_headsup.player2 = _user2.id) 
+1

無論如何,這裏有一些語法錯誤,但一個很好的答案 – Fredrik

+0

對不起,我刪除了FROM之前的逗號。 – Pethical

+0

LEFT JOIN _user2不存在。別名_user u2是正確的;) – Fredrik

0

當你加入_game ON _user,我認爲你必須在這兩個表指定哪些字段加入。您指定加入,但嘗試加入_headsup_user

不確定player1player2是什麼,但這些可能會出現含糊不清的字段,因爲您沒有說出它們來自哪個表。

因此,加入上_user_game,然後再進行第二次與_user_headsup

FROM _game 
LEFT JOIN _user ON _game.someField = _user.someField 
JOIN _headsup ON _user.id = _headsup.player1 
+0

這可能也會工作,但我認爲它看起來更乾淨,2內在連接。表現的優點和缺點? – Fredrik

+0

我確實離開了加入,因爲你離開了加入。我留下了第二個開放,做任何你需要做的加入。它僅取決於您需要查詢的內容。 –

1
SELECT 
    player1, 
    usr1.username AS player1name, 
    player2, 
    usr2.username AS player2name, 
FROM _game 
LEFT JOIN _user usr1 ON usr1.id= _game.player1 
LEFT JOIN _user usr2 ON usr2.id= _game.player2 
+0

我不知道你爲什麼擁有_headsup.player1,因爲它不是查詢中提到的表的一部分 – codingbiz