2014-05-20 108 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 

您试图使用查询获取所有内容。