2013-03-07 97 views
0

我從表中拉訪問,guildid,名字叫guildmembers如何刪除重複的SQL結果?

...和ID,級別,playerclass從另一個表稱爲球員

這裏是我的SQL語句:

 
SELECT guildmembers.access, guildmembers.guildid, guildmembers.name, players.id, players.level, players.playerclass 
FROM guildmembers, players 
ORDER BY guildmembers.name, players.playerclass 

這裏是返回。

這是我所需要的。

任何想法如何做到這一點?

回答

3

你需要做的是一個聯合聲明。目前您正在告訴sql只顯示來自兩個表的所有摘要。您只想在結果匹配的位置顯示結果,併爲此使用連接語句。

SELECT guildmembers.access, guildmembers.guildid, guildmembers.name, players.id, players.level, players.playerclass 
FROM guildmembers join players on guildmembers.pid=players.id 
ORDER BY guildmembers.name, players.playerclass 

guildmembers.pidplayers.id兩個表中的公共領域,所以你加入這些表。

http://www.w3schools.com/sql/sql_join.asp

,使這個更容易跟蹤和了解兩個表中有一個共同的字段名。然後你可以使用它來加入,它更有意義。

希望能幫助你。

+0

真棒!這工作。我無法相信我忘記了加入。這是漫長的一天。感謝Smudger! :)常見的字段名稱在我要改進的東西列表上。 (例如,從我的TODO.txt文件中:「將公會表格中的gid更改爲guildid以獲得一致性。」) – 2013-03-07 09:39:45

1

你的SQL語句是不正確的,請嘗試

SELECT guildmembers.access, guildmembers.guildid, guildmembers.name, players.id, 
players.level, players.playerclass from guildmembers left join players on guildmembers.pid = players.id order by guildmembers.name, players.playerclass 
+0

感謝Alkani的幫助。 – 2013-03-07 09:51:12

1
SELECT gm.access as access, gm.guildid as guildid, gm.name as name, 
p.id as id, p.level as level, p.playerclass as playerclass 
FROM guildmembers gm LEFT JOIN players p on gm.pid=p.id 
ORDER BY gm.name, p.playerclass