2012-08-30 1 views
0

동일한 이벤트에서 같은 위치를 얻은 수영 선수를 알아 내야합니다. 이러한 수영 선수의 각 쌍마다 이벤트 ID, 장소 및 관련된 각 수영 선수의 경쟁자 번호를 보여주는 행 하나를 표시해야합니다. 예SQL 도움말은 내부 조인에 대한이 쿼리를 해결할 수 없습니다

eventid place competitors tied 

SWM012 2 1072528 1099641 

SWM021 2 1018529 1061698 

이 내 코드 원경

select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 
from Results R1, Results R2 
where R1.Place = R2.Place 
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 

이며,이 출력

eventid Place competitornum competitornum 

SWM010 1  1121587   1056740 

SWM010 1  1121587   1061698 

하고 그래서 상기 제 competitornum 열의 다른 제 열의 동일한 competitornum에

위의 설명과 같이 출력을 얻는 방법을 알고 싶습니다.

답변

0

첫째, 당신은 가능성뿐만 아니라 이벤트 ID에 가입해야

select R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId 
group by R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 

위의 쿼리가이

select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId 

과 같은 결과를 반환하지만이 '관계의 모든 고유 쌍을 반환합니다 '. 한 가지 해결책은 다음과 같습니다.

select distinct R1.Eventid, R1.Place, R1.Competitornum, R2.Competitornum 
from Results R1, Results R2 
where R1.Place = R2.Place AND R1.EventId = R2.EventId AND R1.Competitornum > R2.Competitornum 

이 방법은 양방향 관계에서만 작동합니다.

+0

당신은 신 이라구요, 고마워요! 전설 – Mike

관련 문제