Страница 1 из 1
узнать позицию значения после сортировки
Добавлено: 2008-04-12 8:41:38
ProFTP
есть таблица для рейтинга
Код: Выделить всё
id | name | pole|
------------------|
1 a 20
2 b 30 |
3 c 10
----------------- |
нужно отсортировать к убыванию и написать на каком "месте" id 2
пробовал COUNTE, но не получаеться определить в какой позиции значение id ... как сделать?
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-13 17:10:07
BlackCat
Если в лоб, то SELECT'ом забираем id из отсортированной таблицы и уже внутри программы определяем положение записи с нужным id в таблице.
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-13 20:22:50
ProFTP
Код: Выделить всё
SELECT count(*)+1 FROM `table` AS t1
LEFT JOIN `table` AS t2
ON t1.id=$id AND t1.pole < t2.pole
where t2.id IS NOT NULL
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-16 8:23:59
hizel
Код: Выделить всё
select id from table order by pole desc limit 1;
если я конечно правильно понел чт ты хочешь
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-16 9:43:20
ProFTP
извините, если я не правильно сформулировал вопрос, потому что сформулировать было не легко!!!
нет я хотел не это, а не много сложнее
у меня есть id 2
нужно отсортировать к убыванию и написать на каком "месте" id 2
работает вот так:
Код: Выделить всё
SELECT count(*)+1 FROM `table` AS t1
LEFT JOIN `table` AS t2
ON t1.id=$id AND t1.pole < t2.pole
where t2.id IS NOT NULL
в
DB2
Код: Выделить всё
select tmp.position
from (select row_number() over(order by pole desc) as position, id from rating) as tmp
where tmp.id = 2
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-16 17:28:21
zg
можно сделать с помощью временной таблицы
1. заполняешь временную таблицу в порядке рейтинга
2. обновляешь номера позиций строк
3. выбираешь нужную строку, позиция в рейтинге уже будет вычислена
на мускуле я бы использовал автоинкремент, сократив число запросов
Re: узнать позицию значения после сортировки
Добавлено: 2008-04-16 23:03:27
ProFTP
ну там таблица не маленькая, это нужно ее всю отсортировать занести в хэш, и потом во всей таблице все значение обновить? (
это не замедлит работу сильно? или как обновить?)
если я правильно понял...
спасибо, попробую

Re: узнать позицию значения после сортировки
Добавлено: 2008-04-18 10:43:33
zg
ProFTP писал(а):(
это не замедлит работу сильно? или как обновить?)
если я правильно понял...
спасибо, попробую

если только таблица весит метр и более, а так нет