2014-05-20 168 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,然後您將擁有不同的Sports。

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

您只需要在那裏有一個Inner Join語句。

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 

您試圖使用查詢獲取所有內容。