Страница 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
ну там таблица не маленькая, это нужно ее всю отсортировать занести в хэш, и потом во всей таблице все значение обновить? (это не замедлит работу сильно? или как обновить?)
если я правильно понял...

спасибо, попробую :P

Re: узнать позицию значения после сортировки

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

спасибо, попробую :P
если только таблица весит метр и более, а так нет