2014-05-20 2 views
0

나는이 쿼리에 문제가 :그룹에 의해 SQL 쿼리 초급

SELECT MAX(PL.BEST_RESULT), S.NAME, A.NAME 
FROM PLAYS PL 
    INNER JOIN ATHLETE A ON A.ID_ATHLETE = PL.ID_ATHLETE 
    INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT 
GROUP BY PL.ID_SPORT, S.NAME, A.NAME 

그것은 테이블 놀이의 모든 레코드를 표시하지만, 난 그냥 운동 선수 이름으로 스포츠로 그룹화 best_result의 최대 누가 소유하고 싶어 결과. 누군가 내 쿼리에 어떤 문제가 있다고 말할 수 있습니까?

편집 : 또한 best_result를 소유 한 운동 선수를 표시하고 싶습니다. 여기에 테이블이 있습니다

PLAYS {ID_ATHLETE, ID_SPORT, BEST_RESULT} 
SPORT {ID_SPORT, NAME} 
ATHLETE {ID_ATHLETE, NAME} 
+0

몇 가지 샘플 데이터를 게시 할 수 있습니까? – user2989408

+0

내 게시물을 편집했습니다. 희망이 분명하다. 도와 주셔서 감사합니다 :) – nytochin

답변

0

귀하의 질의는 스포츠와 운동 선수의 고유 한 조합을 모두 반환합니다. GROUP BY 및 SELECT에서 A.NAME을 (를) 제거해야하며 별개의 스포츠 만 갖게됩니다.

SELECT MAX(PL.BEST_RESULT), S.NAME 
FROM PLAYS PL 
    INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT 
GROUP BY PL.ID_SPORT, S.NAME 
0

내부 결합 문 하나만 있으면됩니다.

Select Max(PL.BEST_RESULT), S.NAME 
FROM PLAYS PL 
INNER JOIN SPORT S 
    ON S.ID_SPORT = PL.ID_SPORT 
GROUP BY S.NAME 
     ,PL.ID_SPORT 

검색어로 모든 것을 얻으려고했습니다.