私はオンラインの数学テスト プログラムを書いており、現在、各ユーザーが得たランクを計算するスクリプトに取り組んでいます。次のコードは機能しますが、見るたびにうんざりします。
get_set() はクエリの結果を $users に入れます
function rank_users_in_test($tid){
$GLOBALS['DB']->get_set($users,"select user,test from user_results where test=$tid order by points desc,time");
// $users are already in order by rank thanks to ORDER BY
$rank = 1;
foreach ($users as $u){
$GLOBALS['DB']->query("update user_results set world_rank=$rank where user={$u['user']} and test={$u['test']}");
$rank++;
}
}
ループ内のクエリは、私を少し泣かせます。私の質問は、最初のクエリの結果に表示された順序に基づいて、MySQL が各ユーザーのランクを自動的に更新できる方法はありますか? ここに関連する質問がありますが、UPDATE は使用しません。
MySQL5を使用しています。