2013-03-07 1 views
0

guildmembers중복 된 SQL 결과는 어떻게 제거합니까? 나는 테이블에서 액세스, guildid, 이름을 당기는하고

을했다.

... 그리고 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 파일에서 : 길드 테이블의 길드를 길드 ID로 변경하십시오.) –

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에게 도움을 주셔서 감사합니다. –

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