registrations
ユーザーの情報、leaderboard
ユーザーのIDと現在のレベル、そして最後にユーザーが特定のレベルをクリアした時間を記録する「clear_times」を含む3つのテーブルがあります。
MySQL を使用してリーダーボードを生成しています。最高レベルのユーザーが上に立ちます。clear_time
同じレベルのユーザーは、レベルをクリアした時間に応じてランク付けされます。(最初にレベルをクリアすると先にランクされます)。
以下は、私が目的のために使用しているコードです:
SELECT t1.level, t3.user_id, t3.user_id2, t3.user_type
FROM leaderboard AS t1
INNER JOIN clear_times AS t2 ON ( t1.uid = t2.uid AND (t1.level -1) = t2.level )
INNER JOIN registrations AS t3 ON ( t1.uid = t3.id )
ORDER BY t1.level DESC , t2.clear_time ASC
id' is a primary key of and
uid` は外部キーです。
このコードは、リーダーボードの生成に最適です。今、特定のユーザーのランクを特定したいと思いますid
。これは、レコードをループし、カウンター変数を使用して、サーバー側のスクリプトで実行できます。しかし、MySQL自体でこれを行う方法があり、上記のコードを操作する方法があると思いますが、私にはできませんでした。