Mysql SQL查询-远远超出我的理解范围

Mysql SQL查询-远远超出我的理解范围,mysql,sql,Mysql,Sql,我正在一个赛车系列网站上工作,在那里我们在赛季中统计积分,我想尝试将打破平局的细节放在查询中,而不是用PHP构建逻辑 表结构: users --------------------- user_id first_name last_name user_races --------------------- ur_id user_id race_id user_race_classes --------------------- ur_id class_id points_earned 目前

我正在一个赛车系列网站上工作,在那里我们在赛季中统计积分,我想尝试将打破平局的细节放在查询中,而不是用PHP构建逻辑

表结构:

users
---------------------
user_id
first_name
last_name

user_races
---------------------
ur_id
user_id
race_id

user_race_classes
---------------------
ur_id
class_id
points_earned
目前我们只进行了4场比赛,因此我不必执行查询的前4部分。这是一个志愿者职位,我没有太多时间,但以下是我当前的查询:

SELECT SUM(urc.points_earned) as total_points,
u.first_name,
u.last_name,
u.user_id,
ur.ur_id
FROM user_race_classes urc
LEFT JOIN user_races ur ON urc.ur_id = ur.ur_id
LEFT JOIN users u ON ur.user_id = u.user_id
LEFT JOIN classes c ON urc.class_id = c.class_id
WHERE ur.race_id IN (SELECT race_id FROM races WHERE season_id = :season_id && start_date < NOW()) && urc.class_id = :class_id
GROUP BY u.user_id
ORDER BY total_points DESC
在8场比赛中,只有你的前4名成绩被计算在内,以下是关于平局决胜规则的实际措辞:

如果总积分中出现平局,则平局破坏者将通过计算2013年总积分中您赢得的比赛总数来确定。将有4场比赛计入您的总积分;然后第二名结束,依此类推,直到平局打破。在不太可能的情况下,平局一直持续到最后一场计入总分的比赛,比较计入总分的比赛之外的下一个最高终点,然后比较下一个最高终点,以此类推

有谁能提供一些建议,告诉我们应该学习什么或研究什么,以便严格使用MySQL来实现这一目标

编辑:可在此处查看数据:


Cheers

在客户端代码中实现这一点可能比尝试提出一个可以在未知级别上自动递归的查询要好。@MarcB我听到了,这就是我刚开始的地方,但后来我认为它在SQL中一定是可行的,这将是一个很好的学习体验。只是不知道从哪里开始。@Lukeptitman。示例数据和期望的结果将真正帮助读者更好地理解规则。@GordonLinoff-谢谢。。。在数据在线时编辑并添加了指向数据的链接。在客户端代码中实现这一点可能比尝试提出一个可以在未知级别上递归的查询更好。@MarcB我听到了,这就是我刚开始的地方,但后来我认为它在SQL中必须是可行的,并且将是一次很好的学习经历。只是不知道从哪里开始。@Lukeptitman。示例数据和期望的结果将真正帮助读者更好地理解规则。@GordonLinoff-谢谢。。。在线编辑并添加数据链接。