Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Есть такая вот проблемка:
если таблица с пользователями. У каждого есть поле `raiting` и `id`
так вот, необходимо вытащить место пользователя в рейтинге.
Т.е. если делать запрос :
SELECT * FROM `users` ORDER BY `raiting` DESC
выводится список пользователей с рейтингом по убыванию. Каков должен быть запрос, что бы, допустим, зная `id` пользователя можно вытащить его порядковое место в новом запрос?
Заранее спасибо.
Отредактированно levak (15.05.2011 16:33:50)
Неактивен
Можно так:
Неактивен
У меня была такая же реализация и я в неё верил, пока рейтинги у всех пользователей были разные. но как только как минимум у двух пользователей появлялись одинаковые рейтинги у них места были одинаковые...
Неактивен
Будет элемент рандомности, если не задать дополнительный критерий сортировки. Например, если рейтинг одинаковый, то выше тот, у кого меньше id.
P.S. Позицию юзера можно определять для всех одновременно в общем запросе:
Неактивен
Спасибо! Это именно то, что я хочу, НО:
1. как это запихнуть в PHP, т.к. функции mysql в PHP поддерживают только один запрос, а с SET @pos=0; это уже два запроса
2. мне необходимо вытащить место определённого пользователя с `id`
как мне быть?
заранее спасибо!
Неактивен
1. Сначала выполняете первый запрос, затем отдельной функцией mysql_query() второй
2. Напрасно вы не хотите детерминизировать свою задачу определив позицию однозначно. Если все же настаиваете, то запрос, который Вам нужен такой:
Неактивен
Я так понимаю tbl = tbl2 = `users`
Неактивен
Это псевдонимы для таблиц, которые получаются в результате выполнения соответствующих подзапросов.
Неактивен
А, т.е. так и оставить?
Неактивен
В любом случаем, наиогромнейшее Вам спасибо!
Вы меня очень сильно выручили!
Моих благодарностей не хватит, что бы реально отразить ту помощь, которую Вы мне оказали!
Ещё раз спасибо!
Неактивен