cn_category.category_points
すべてのプレーヤー (cn_players
レコード)の合計ポイント ( ) を計算する必要があります。cn_records
これは、現在のレコードと廃止されたレコードの両方を含むテーブルによって駆動されます。cn_category
すべてのカテゴリ (記録 )、マップ (cn_maps
記録 ; 以下には表示されていません)、およびゲーム (記録 ; 以下には表示されていません )のベストタイムのみを合計する必要がありcn_wads
ます。また、カテゴリー #9、#10、および #11 については、最高点だけでなく、最高3 つのスコア/記録に対してポイントが与えられます。
これまでのところ、次のクエリがありますが、現在のレコードと廃止されたレコードの両方がカウントされます。
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
-clause 条件が削除されています。)
カテゴリは次の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 | ...
... | ... | ... | ... | ...