赛季前10名得分手

时间:2018-07-07 00:29:29

标签: mysql sql

如何按季节获得前10名得分手。

所以它显示了上赛季的前10名得分手...

我尝试过左加入桌,但在显示2位玩家并把所有进球数计入第一个玩家的情况下坏了。

我的sqlfiddle: http://sqlfiddle.com/#!9/b5d0a78/1

2 个答案:

答案 0 :(得分:0)

您几乎完全正确。

您想按玩家ID(match_goals)对match_player_id进行分组,但随后您应该选择goal_minute或每个目标 < / strong>数据。

按玩家分组后,您可以为COUNT(match_player_id)创建一列,这将为您提供进球数,您也可以使用此列对结果进行排序。

我认为您的加入条件是正确的。


编辑

我认为您的架构需要一些调整:选中此http://sqlfiddle.com/#!9/f5a75b/2

基本上在match_playersmatch_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.idGROUP BY键)是唯一的。