我是一名Web開發學生,我遇到了MySQL語句的問題。我被一個遊戲社區要求創建一些小網站,他們可以看到他們禁止哪些人。PHP/MySQL:從表中選擇相同的列,但具有不同的主ID
有兩張表,我使用'帳戶'和'禁令'。賬戶的佈局有點像這個
account_id username (more columns)
---- ---- ----
1 hey ...
2 hdf ...
3 sdf ...
4 admin ...
「禁令」的佈局是:
ban_id account_id bannedby_id (more columns)
---- ---- ---- ----
1 1 4 ...
2 3 4 ...
在這種情況下,ID爲4的管理員已經與ID 1和3。我想禁止賬戶創建一個查詢,其中包含被禁止的人員的姓名以及在單個結果中禁止他的管理員的姓名。
我現在做到這一點,首先做的:
SELECT bans.*, accounts.username FROM bans, accounts WHERE accounts.account_id = bans.account_id
然後遍歷所有結果,然後從結果我得到了選擇的管理員名稱:
while($baninfo = mysql_fetch_assoc($sqlBans))
{
mysql_query("SELECT username FROM accounts WHERE account_id = '" . $baninfo['bannedby_id'] . "'");
}
這個工作,但我不認爲這是做到這一點的正確方法。我認爲必須有一個可以做這樣的查詢的MySQL函數,但是我已經在Google上搜索了它並且找不到它。
只要是明確的,這裏就是我想從查詢得到的結果:
ban_id account_id account_username bannedby_id admin_username (other columns from Bans table)
---- ---- ---- ---- ---- ----
1 1 hey 4 admin ...
2 3 sdf 4 admin ...
對不起,如果這是一個非常愚蠢的問題,但我可以解決這個問題。我希望你們對我有一個解決方案。我使用這個網站很多,因爲我遇到小問題,它總是有很好的答案。
問候, 馬克
嘿感謝您的快速答覆!它按預期工作。我應該看看INNER JOIN功能。 – user1518750 2012-07-11 19:39:45