MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
ProFTP
- проходил мимо
Непрочитанное сообщение
ProFTP » 2008-04-12 8:41:38
есть таблица для рейтинга
Код: Выделить всё
id | name | pole|
------------------|
1 a 20
2 b 30 |
3 c 10
----------------- |
нужно отсортировать к убыванию и написать на каком "месте" id 2
пробовал COUNTE, но не получаеться определить в какой позиции значение id ... как сделать?
ProFTP
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Непрочитанное сообщение
BlackCat » 2008-04-13 17:10:07
Если в лоб, то SELECT'ом забираем id из отсортированной таблицы и уже внутри программы определяем положение записи с нужным id в таблице.
BlackCat
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2008-04-13 20:22:50
Код: Выделить всё
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
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ProFTP
-
hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Непрочитанное сообщение
hizel » 2008-04-16 8:23:59
Код: Выделить всё
select id from table order by pole desc limit 1;
если я конечно правильно понел чт ты хочешь
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
hizel
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2008-04-16 9:43:20
извините, если я не правильно сформулировал вопрос, потому что сформулировать было не легко!!!
нет я хотел не это, а не много сложнее
у меня есть 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
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ProFTP
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2008-04-16 17:28:21
можно сделать с помощью временной таблицы
1. заполняешь временную таблицу в порядке рейтинга
2. обновляешь номера позиций строк
3. выбираешь нужную строку, позиция в рейтинге уже будет вычислена
на мускуле я бы использовал автоинкремент, сократив число запросов
zg
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2008-04-16 23:03:27
ну там таблица не маленькая, это нужно ее всю отсортировать занести в хэш, и потом во всей таблице все значение обновить? (
это не замедлит работу сильно? или как обновить?)
если я правильно понял...
спасибо, попробую
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ProFTP
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2008-04-18 10:43:33
ProFTP писал(а):(
это не замедлит работу сильно? или как обновить?)
если я правильно понял...
спасибо, попробую
если только таблица весит метр и более, а так нет
zg