2013-10-04 66 views
0

基本上,我製作了一個輸出已被禁止的人的表格。到目前爲止,我已經完成了MySQLi的所有工作,而不是顯示它顯示播放器ID的實際名稱。我遇到了麻煩,因爲玩家ID存儲在一個單獨的表中。來自不同表格的MySQLi匹配ID

http://i.stack.imgur.com/sy6G9.png

這幅畫是主表,通知player_id的結構和creator_id?我要做的就是匹配ID並用下面顯示的另一個表中的行「名稱」相應地替換 http://i.stack.imgur.com/Lm3Fg.png

如果您能幫助我,我會非常感激。

+0

我已經回答了這個問題,您需要使用外鍵將這些錶鏈接在一起。 'SELECT * FROM table1 WHERE id =(SELECT * FROM table2 WHERE id = $ id);'會是一個例子。 – Edward

+3

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – Mihai

+1

您不需要子查詢@Edward,只需在id = player_id上進行連接即可。 – EmmyS

回答

1

這個查詢只會顯示你的禁止球員的名字:您將需要改變banned_tablename_table實際表名在你的數據庫

SELECT name FROM banned_table INNER JOIN name_table ON player_id=name_table.id 

當然。

UPDATE: 從下面這個評論是針對OP

SELECT b.*,n.name as player, n2.name as admin FROM banhammer_bans b 
JOIN name_table n ON b.player_id=n.id 
JOIN name_table n2 ON b.creator_id=n2.id 
ORDER BY b.created_at DESC 

並更改顯示代碼的解決方案:

echo'<td>' . $row['player_id'] . '</td>'; 
echo'<td>' . $row['creator_id'] . '</td>'; 

是:

echo'<td>' . $row['player'] . '</td>'; 
echo'<td>' . $row['admin'] . '</td>'; 
+0

上直接查看它也沒有工作:( –

+0

你是什麼意思它didn'如何使用:SELECT b。*,n.name FROM banhammer_bans b INNER JOIN name_table n ON b.player_id = n.id ORDER BY b.created_at DESC''再次替換' name_table' – immulatin

+0

^這工作!:)你能幫我把「禁止」部分? http://auracraft.net/bans/bans.php –

2
SELECT * FROM TableA, TableB 
INNER JOIN TableB 
ON TableA.id = TableB.player_id 
+0

沒有工作。我會在pastebin上發佈我的當前代碼 –