這適用於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
這適用於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
我沒有運行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來自哪裏!
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)
當你加入_game
ON _user
,我認爲你必須在這兩個表指定哪些字段加入。您指定加入,但嘗試加入_headsup
和_user
。
不確定player1
和player2
是什麼,但這些可能會出現含糊不清的字段,因爲您沒有說出它們來自哪個表。
因此,加入上_user
_game
,然後再進行第二次與_user
上_headsup
FROM _game
LEFT JOIN _user ON _game.someField = _user.someField
JOIN _headsup ON _user.id = _headsup.player1
這可能也會工作,但我認爲它看起來更乾淨,2內在連接。表現的優點和缺點? – Fredrik
我確實離開了加入,因爲你離開了加入。我留下了第二個開放,做任何你需要做的加入。它僅取決於您需要查詢的內容。 –
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
我不知道你爲什麼擁有_headsup.player1,因爲它不是查詢中提到的表的一部分 – codingbiz
順便說一句加入,PLAYER1和player2只是一個playerId – Fredrik
爲什麼player1name和player2name引用相同_user.username柱? 「_headsup」從哪裏來? – codingbiz
因爲我不想將用戶/玩家名存儲在遊戲桌上。所以_user.username包含每個玩家的名字。 – Fredrik