Есть несколько рейтинговых постов, но мне еще предстоит увидеть один, в котором рассматриваются, когда результаты разбиты на страницы и когда критерии ранжирования (в данном случае: баллы) равны предыдущему пользователю. Я попробовал несколько из ранее существующих примеров, но ни один не работал.
У меня есть таблица «users» со столбцом «id». У меня также есть таблица «points» со столбцами «user_id» и «amount».
Мне нужно:
1.) Пользователи с одинаковой суммой баллов имеют одинаковый ранг
Таблица очков
user_id amount
1 10
2 20
1 5
3 20
3 -5
4 5
Ранг должен быть
rank user_id total
1 2 20
2 1 15
2 3 15
3 4 5
2.) Требуется поддерживать ранжирование с одной страницы на другую, чтобы в запросе собирался ранг, а не полученный PHP.
3.) Отображать ВСЕХ пользователей, а не только пользователей со строками в таблице баллов, потому что у некоторых пользователей есть 0 баллов, и я хочу, чтобы они отображались последними.
Сейчас я просто перечисляю пользователей в порядке их баллов, но их рейтинг не набирается, потому что он не работает.
$getfanspoints = mysql_query("SELECT DISTINCT id,
(SELECT SUM(amount) AS points FROM points WHERE points.user_id = users.id) AS points
FROM users
ORDER BY points DESC LIMIT $offset, $fans_limit", $conn);
Я прочитал эти решения, и ни одно из них не сработало.
[Блог Роланда] [1]
[Как получить ранг на основе суммы сумм] [2]
[MySQL, получить рейтинг пользователей] [3]
[Как получить рейтинг с помощью запроса MySQL] [4]
и несколько других, чью ссылку я сейчас не могу найти.
Есть предложения?
[EDIT]
Я использовал нижний ответ ypercube.