如何按季节获得前10名得分手。
所以它显示了上赛季的前10名得分手...
我尝试过左加入桌,但在显示2位玩家并把所有进球数计入第一个玩家的情况下坏了。
我的sqlfiddle: http://sqlfiddle.com/#!9/b5d0a78/1
答案 0 :(得分:0)
您几乎完全正确。
您想按玩家ID(match_goals
)对match_player_id
进行分组,但随后您应该不选择goal_minute
或每个目标 < / strong>数据。
按玩家分组后,您可以为COUNT(match_player_id)
创建一列,这将为您提供进球数,您也可以使用此列对结果进行排序。
我认为您的加入条件是正确的。
我认为您的架构需要一些调整:选中此http://sqlfiddle.com/#!9/f5a75b/2
基本上在match_players
和match_goals
中创建与其他表的直接关系。
答案 1 :(得分:0)
我认为您想要的查询如下:
SELECT p.*, count(*) as num_goals
FROM match_goals g INNER JOIN
match_players p
ON g.match_player_id = p.id INNER JOIN
matches m
ON m.id = p.match_id
WHERE p.is_deleted = 0 AND
g.is_own_goal = 0 AND
m.seasion_id = <last season id>
GROUP BY p.id
ORDER BY num_goals DESC
LIMIT 10;
请注意,不需要teams表。允许使用SELECT p.*
,因为p.id
(GROUP BY
键)是唯一的。