ENeLsOn
@ENeLsOn

Как получить позицию записи после выборки из базы mysql и сортировки?

Есть table: id col1 col2 col3 col4
Для вывода списка производится вот такой запрос: "SELECT * FROM `table` ORDER BY col1 DESC, col2 DESC, col3 DESC, id ASC".

Представим, что это некий рейтинг, и зайдя на страницу конкретного участника, есть поле "Место в рейтинге", которое будет показывать его порядковый номер в этом рейтинге. Как узнать этот порядковый номер?
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
ENeLsOn
@ENeLsOn Автор вопроса
Пошерстив просторы интернета, наткнулся на страницу: https://vk.cc/8eiMSw

Оттуда взял пример кода, немного поколдовав. Получилось:
$database->query("SELECT @i:=0, @j:=0");
$database->query("SELECT @i:=@i+1, @j:=IF(id=$id,@i,@j) FROM `table` WHERE 1 ORDER BY col1 DESC, col2 DESC, col3 DESC, id ASC");
$position = $database->query("SELECT @j AS position");


Не сталкивался с подобными проблемами, и не уверен на 100% на счет этого кода. Но пока все тесты показывают, что он работает, и делает это быстро.. Если вдруг что-то изменится и обнаружатся какие-либо ошибки - добавлю.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@retvizan
SELECT @i:=@i+1 `порядковый номер записи при такой сортировке`, `table`.* 
FROM `table`, (select @i:=0)x 
ORDER BY col1 DESC, col2 DESC, col3 DESC, id ASC LIMIT $start, 50
Ответ написан
Ваш ответ на вопрос

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

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