Нумерация записей с учетом сортировки

VladBD
Дата: 11.09.2005 18:09:57
Вопрос.

Нужно отсортировать таблицу из mdb в DELPHI по нескольким полям
(например поле1 DESC, поле2 ASC, поле3 DESC) и в поле4 проставить номер по порядку сортировки.

1:
Делаю через ADOQUERY запрос с ORDER BY... и потом UPDATE поле4 = переменная+1 where (ID=ADOQUERY.id)

2:
ADOTABLE.sort=...
потом с начала таблицы бегу и
edit
поле4=переменная+1
post

Смысл такой - все это долго работает - особенно от 100.000 записей
Как еще по быстрому можно такое решить.

p.s. например в foxpro есть функция пересортировать по нескольким полям в другую таблицу а потом быстро проставить recno()
Владимир Саныч
Дата: 11.09.2005 18:27:47
VladBD
Дата: 11.09.2005 18:43:57
не совсем
хотелось бы без промежуточных таблиц
просто тупо пересортировать и пронумеровать... или перенумеровать поле4
Владимир Саныч
Дата: 11.09.2005 18:57:59
http://www.sql.ru/faq/faq_topic.aspx?fid=214
вопрос 7
- где там промежуточные таблицы???
VladBD
Дата: 11.09.2005 20:15:08
>Примечание 2. Способ 1 быстрее работает, но является необновляемым.
т.е. способ 1 не подходит

но так и не понял - эти запросы дают просто отсортированную пронумерованную выборку
а вопрос в том как потом быстрее эти номера загнать в таблицу БД в поле4 (причем возможна нумерация с произвольного числа)
Владимир Саныч
Дата: 11.09.2005 21:22:22
VladBD
>Примечание 2. Способ 1 быстрее работает, но является необновляемым.
т.е. способ 1 не подходит

Если это только для того, чтобы взять данные и занести в исходную таблицу, то какая разница?

VladBD
но так и не понял - эти запросы дают просто отсортированную пронумерованную выборку
а вопрос в том как потом быстрее эти номера загнать в таблицу БД в поле4

Запросом на обновление.

VladBD
(причем возможна нумерация с произвольного числа)

Значит, надо добавить константу. Тоже не проблема.
VladBD
Дата: 11.09.2005 21:39:33
>Запросом на обновление.

Извините за тупость. Можете написать как за один запрос на Update поле4 заполнилось числами по порядку взависимости от сортировки.

Если делать запрос1 в котором выводятся: номер п/п, ID записи, а потом бежать по запросу и делать запрос2 Update поле4=номер п/п where (ID записи=запрос1.ID записи) то долго получается по скорости.