@ruboss

Как сделать выборку положения пользователя в рейтинге?

Всем привет!

Есть запрос, который достает N-е кол-во пользователей по рейтингу:
SELECT d.login, t.count
FROM `".Constant::TOPS_TABLE."` t, `".Constant::USERS_TABLE."` u, `".Constant::DATA_TABLE."` d
WHERE u.id = t.user_id AND u.id = d.user_id AND t.tdate = :tdate
ORDER BY t.count DESC
LIMIT :limit


Как я смогу узнать место в рейтинге конкретного пользователя?

SELECT d.login, t.count, ROW_NUMBER() OVER(ORDER BY t.count DESC) AS place
FROM `".Constant::TOPS_TABLE."` t, `".Constant::USERS_TABLE."` u, `".Constant::DATA_TABLE."` d
WHERE u.id = t.user_id AND u.id = d.user_id AND t.tdate = :tdate AND u.id = :user_id


Погуглив нашел ROW_NUMBER(), выдает ошибку синтаксиса, кто знает в чем проблема? Или может есть другие способы решения данной задачи?

Спасибо!
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
ROW_NUMBER это про MSSQL

для mysql надо извращаться: mysql get row number - это для общего топа

для того чтобы посчитать конкретного юзера: mysql get user rank

Если кратко: считаем количество юзеров ДО нужного юзера, отнимаем/прибавляем 1, получаем позицию юзера таким образом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы