私は、人々がゲームでハイスコアを保存している Web サイトを持っています。私は、より高い他のハイスコアの数を見つけることによって、プレーヤーのハイスコアにランクを割り当てようとしています。したがって、クエリでハイスコアがより高い 5 人が見つかった場合、そのプレーヤーのハイスコア ランクは 6 になります。
問題は、すべてのユーザーのデータベースに (同じゲームの) 複数のスコアを記録できることです。これが、ゲームでプレイヤーの最高スコアのみを表示したい場合にGROUP BY ユーザーを使用している理由です(そのゲームでのすべてのスコアではありません)。
ここに私が今使っているコードがあります。クエリは常に 2 を返すように見えるため、機能しません (プレイヤーのハイスコアよりも高いスコアが 1 つしかないことを常に返す場合のように)。temp GROUP BY userを削除すると、特定のゲームのすべてのプレーヤーからすべてのスコア (プレーヤーがゲーム内の複数のスコアの場合) をカウントするため、半分正しい値が返されます。
$count3 = mysql_result(mysql_query("SELECT COUNT(*) + 1 as Num FROM (SELECT * FROM ava_highscores WHERE game = $id AND leaderboard = $get_leaderboard[leaderboard_id] AND score > '$highscore2[score]') temp GROUP BY user");