У меня есть сайт, где люди сохраняют рекорды в играх. Я пытался присвоить рейтинг рекорду игрока, находя количество других рекордов, которые выше. Таким образом, если запрос найдет 5 человек с более высокими показателями, рейтинг рейтинга игрока будет 6.
Дело в том, что в базе данных для каждого пользователя может быть записано более одного счета (за одну и ту же игру). Вот почему я использую пользователя GROUP BY , когда я хочу отображать только лучший результат игрока в игре (не все его результаты в этой игре).
Вот код, который я сейчас использую. Это не работает, так как запрос, кажется, всегда возвращает 2 (как если бы он всегда возвращал, что был только на один балл выше, чем рекорд игрока). Если я удаляю temp GROUP BY пользователя , он возвращает половинное правильное значение, так как подсчитывает все оценки (если игрок набрал несколько очков в игре) от каждого игрока в данной игре.
$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");