Есть несколько ранговых сообщений, но мне еще предстоит увидеть, когда речь идет о том, когда результаты разбиты на страницы и когда критерии ранжирования (в данном случае: точки) равны предыдущему пользователю , Я пробовал несколько из ранее существовавших примеров, но никто не работал.Получить рейтинг пользователя на основе суммы с разбивкой по страницам
У меня есть таблица, называемая «пользователями», с столбцом «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.) Необходимо поддерживать рейтинг с одного ранга ge к другому, поэтому ранжирование должно быть собрано в запросе, а не в результате 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 query] [4]
и несколько других, чью ссылку я не могу найти прямо сейчас.
Любые предложения?
[EDIT]
Я использовал нижний ответ ypercube в.
Просто примечание: если вы показываете ряды больше, чем вы их меняете, стоит подумать о денормализации ваших таблиц и сохранении суммы очков для каждого пользователя в таблице пользователей. Обновляйте его только тогда, когда пользователь получает несколько очков, вместо того, чтобы пересчитывать его для каждого рендеринга страницы. – bububaba
Я думаю, что это будет сложно сделать с моей ситуацией, так как пользователи зарабатывают и быстро теряют очки, но точки также являются «в очереди», между задержкой и очками есть задержка, и когда они могут реально использовать свои очки для вещей , Также каждая точка привязана к определенному действию. Таблица точек также включает столбцы page_id, module_id, post_id, group_id, item_id, other_users. Они зарабатывают и теряют очки за разные действия, и журнал их отображается в их профиле и на панели пользователя. Трудно объяснить, но я не чувствую, что это сработает. – bowlerae