Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Оптимизация сортировки со своими правилами  [new]
CostyaN
Member

Откуда:
Сообщений: 4
Вопрос: Правильно ли создавать справочную таблицу с дополнительными полями, если нужна своё правило сортировки или можно сделать проще, используя процедуры,коллате или что-то еще?

Сейчас в таблице есть столбец Группа
М3
М5
М2
М7
ТС
..
Скаф
Жер
...

Нужен итог сортировки(по возрастанию)
М2
М7
М3
М5
...
Жер
Скаф


Первая часть до ТС всегда одинакова и должна быть в верху при любой сортировке (по возрастанию или убыванию).
Нижняя часть После ТС меняется и всегда должна быть внизу при сортировке.

Как хочу сделать сортировку.
Придется создать справочную таблицу Групп, туда перенести данные,создать foreign key с главной таблицей.
Добавить два поля. Первое boolean - true для верхней части,чтобы всегда была сверху, false для остального
Второе поле smallint. Задаст сортировку для верхней части. Чтобы было М2,М7,М3....
17 июн 20, 13:57    [22152355]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация сортировки со своими правилами  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 982
CostyaN,

просто добавьте одно поле Integer. Верхним значениям задайте значение этого поля от 1 до 1000 (к примеру). Остальным 1001. Сортируйте по двум полям: новому+наименование.
17 июн 20, 14:09    [22152373]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация сортировки со своими правилами  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8571
числовое поле SORTINDEX наше фсё, лучше bigint, чтоб можно было замутить диапазоны прямо в нем без джойнов и выпендрежа. Заполнять триггером исходя из некой логики, потом банальный ORDER BY SORTINDEX.
24 июн 20, 13:46    [22156519]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация сортировки со своими правилами  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 18521
Ivan_Pisarevsky,

Числовое может и быстрее, но плохо читаемое.
Я обхожусь обычным текстовым, которое заполняется префиксами, кодами родителей, частью даты и т.д.

Группы, иерархии и т.п. отлично входят.
И сортируется ОК, и читается визуально отлично, если кому-то что-то непонятно в результатах сортировки.
24 июн 20, 13:54    [22156525]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация сортировки со своими правилами  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61467
CostyaN
Первая часть до ТС всегда одинакова и должна быть в верху при любой сортировке (по возрастанию или убыванию).
Это довольно необычное требование.
1. Она абсолютно всегда одинакова? Т.е. количество и состав строк?
2. Это нужно где - в гриде, в отчете, где-то ещё?

Озвученные варианты про доп.поле (неважно, триггером или case-ом) - универсальные,
но в зависимости от ответов на 1 и 2 возможны и менее универсальные варианты.
24 июн 20, 13:54    [22156526]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить