cn_category.category_points
我需要计算每个玩家(cn_players
记录)的总分( )。这是由cn_records
包含当前和过时记录的 table 驱动的。我只需要总结所有类别(cn_category
记录)、地图(cn_maps
记录;未在下面显示)和游戏(cn_wads
记录;未在下面显示)的最佳时间。此外,对于 #9、#10 和 #11 类别,将根据三个最佳分数/记录授予积分,而不仅仅是最好的。
到目前为止,我有这个查询,但它同时计算了当前和过时的记录:
SELECT *, MIN(r.record_time), SUM(cn_category.category_points)
FROM (select * from cn_records as r order by r.record_time ASC) AS r
LEFT JOIN cn_players ON r.player1_id = cn_players.player_id
LEFT JOIN cn_category ON r.category_id = cn_category.category_id
WHERE r.category_id BETWEEN 1 AND 25
GROUP BY r.player1_id
ORDER BY SUM(category_points), r.player1_id DESC
(注意:以上不是完整的查询。WHERE
为简单起见,删除了一些连接和子句条件。)
类别在cn_category
表中:
category_id | category_points | ...
-------------+-----------------+-----
1 | 1.0 | ...
9 | 5.0 | ...
... | ... | ...
玩家在cn_players
表中:
player_id | ...
-----------+-----
1 | ...
2 | ...
... | ...
“记录”在cn_records
表中(有数千行):
record_id | category_id | player1_id | record_time | ...
-----------+-------------+------------+-------------+-----
1 | 1 | 143 | 00:00:00 | ...
2 | 1 | 145 | 00:00:00 | ...
3 | 1 | 41 | 00:00:00 | ...
4 | 1 | 41 | 00:00:00 | ...
5 | 1 | 141 | 00:00:00 | ...
6 | 1 | 41 | 00:00:00 | ...
... | ... | ... | ... | ...