Страница 1 из 1

Сортировка по составному ключу

Добавлено: 21 Декабрь 2005, 14:32
gudkov
Здравствуйте все.

Проблема такая, есть брауз, в который производиться выборка через rangelimit (С6.2ШВС), эта выборка производиться по составному ключу типа: fil:k_sort
|-id
|-name
Так вот, выборка производиться по полю id, которое в ключе соответственно первое, но после выборки, брауз должен быть упорядочен по полю name, как это реализовать? Если поставить поле id вторым в ключе, rangelimit не срабатывает, упорядочить брауз после выборки при постраничной загрузке, тоже проблематично (в ШВС к сожалению, только Page метод заполнения брауза). Попробовал переустанавливать после выборки View, по другому ключу, но это криво и тормозно. Подскажите, как быть?

Добавлено: 21 Декабрь 2005, 16:43
Олег
Насколько я понимаю, проблема только при выборке не по одному значению ID, а по диапазону значений этого поля?
Есть два варианта:
- оставить текущий ключ, но в бровзе дополнительно задать порядок сортировки выборки. Кажеться в ШВС-шаблоне бровза есть такая возможность.
- использовать ключ только с одним полем NAME и в качестве фильтра задать что-то типа "(ID => loc:Lo) AND (ID <= loc:Hi)"

В обеих случаях, естественно, будет подтормаживать. Хотя, я бы использовал второй вариант, как более логичный.

Есть еще два варианта:
- отобрать нужные записи в очередь, отсортировать ее и показать в обычном листе. Для большей функциональности можно поискать шаблон бровза по очереди - что-то похожее было, кажется.
- задекларировать динамический ключ и по нему сделать бровз, в котором этот ключ вначале и создавать по нужному условию.

Вообщем, в любом случае, поставленная задача не может быть решена иначе, что позволит создать "быструю" выборку.

Добавлено: 22 Декабрь 2005, 7:37
gudkov
Да, проблема при выборке по id через 'очередь значений' и по диапазону. После выборки, брауз получаеться упорядоченым именно по id, а нужно, по name, например(вид брауза) упорядочиваеться так:
name id
Иванов 1
Абрамов 2

а нужно так:
name id
Абрамов 2
Иванов 1

Ну первый вариант через prop:order это действительно большие тормоза, особенно на большой выборке. и второй вариант с фильтром не годиться, так как есть браузы, в которых выборка у меня производиться через 'очередь значений' (есть в ШВС такой вид rangelimit'a). Насчет отбора записей в очередь, все бы удобно, но там будут проблемы с редактированием файла, по которому строиться брауз.
А вот про динамический ключ нельзя ли поподробнее,как его задекларировать, как это реализовать, честно говоря никогда не работал с динамическими ключами, видимо это единственный более менее пригодный по скорости способ.

Кстати в ШВС нет дополнительного задания сортировки для обычного листа, есть для дроплиста и для дропкомбо, но в принципе ведь эта сортировка задаеться через prop:order, так что это нетрудно прописать руками, еслиб не тормознутость этого решения.

Добавлено: 23 Декабрь 2005, 15:27
gudkov
Ау, коллеги.

Неужто никто не может подсказать, как задеклалрировать динамический ключ, для выборки в брауз. Сам после перехода с СPD с такими вещами не сталкивался. :(

Добавлено: 23 Декабрь 2005, 15:46
softcreator
Вот же ж госсыди... А что - открыть хелп, в строке поиска набрать слово dynamic - сложно?!! Ну я просто фигею иногда с народа!!!
После набора этого слова видим топики "dynamic INDEX" и "Dynamic index:BUILD" - и вдумчиво читаем.