Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Порядок полей при выборке / 8 сообщений из 8, страница 1 из 1
21.06.2020, 23:47
    #39971598
Sashaua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
Всем привет, возможно глупость буду спрашивать...
Есть таблица моделей
IDNAME_MODELCODE_MODELUNIT_MODELBARCODE_MODELи еще несколько полей
В 95 случаев модели выбираються в виде
Код: sql
1.
select CODE_MODEL||NAME_MODEL,..... from MODELS  


Захотели хотелку чтобы можно было менять порядок полей при выборе моделей, и это было настройкой.
Например:
Код: sql
1.
select CODE_MODEL||NAME_MODEL,..... from MODELS  


или
Код: sql
1.
select NAME_MODEL||CODE_MODEL,..... from MODELS  


или
Код: sql
1.
select NAME_MODEL||BARCODE_MODEL,..... from MODELS  


Вопрос как можно сделать это легантно не плодив кучу if оф. Например через таблицу настроек или как то еще. Как такой вопрос решают по правильному?
Заранее спасибо.
...
Рейтинг: 0 / 0
22.06.2020, 00:12
    #39971606
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
Sashaua
не плодив кучу if оф.
Кнопку "Сделать всё хорошо"?
На клиенте, через настройку, используемую в ифах.
...
Рейтинг: 0 / 0
22.06.2020, 00:19
    #39971607
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
YuRock,

в исходном сообщении почему-то все вытаскивается в один столбец, конкатенацией.
И я х.з., как потом приложение будет разбирать, в каком порядке какие стольбцы идут.
Поэтому да,
- конкатенацию отменить
- крутить порядок столбцов в гриде на клиенте. И там же сохранять.
...
Рейтинг: 0 / 0
22.06.2020, 00:31
    #39971608
Sashaua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
kdv,
В базе это два разных поля NAME_MODEL и CODE_MODEL
На клиенте это действительно в один столбец конкатенацией (так было в ТЗ)
...
Рейтинг: 0 / 0
22.06.2020, 00:44
    #39971610
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
SashauaНа клиенте это действительно в один столбец конкатенацией (так было в ТЗ)

Так ты определись: конкатенация у тебя на сервере или на клиенте. В первом сообщении она
таки на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.06.2020, 03:42
    #39971621
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
Если варианты склейки жестко привязаны к конкретным записям MODELS то можно подумать над таким вариантом:
- в MODELS добавить поле FULL_NAME
- заполнять триггером на основании типа записи (если таковые возможно выделить, конечно)

Ну и соответственно, выбираешь всегда FULL_NAME но для разных MODELS оно может быть собрано по разному.

Минусы
- избыточность данных на сервере
- следить за обновлением FULL_NAME если именились составляющие его части

Плюсы
- не нужно морочиться с запросом, он всегда одинаковый
- если нужно поискать в FULL_NAME - то пожалуйста, не нужно выяснять что и как склеено
- FULL_NAME может быть проиндексировано (если не слишком большое), что может ускорить какие-то запросы (но, естественно, может и замедлить)
...
Рейтинг: 0 / 0
23.06.2020, 13:39
    #39972373
Tonal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
Возможных вариантов - вагон. :)
Ежели порядок склейки зависит от данных - можно изобразить сложный запрос, который это учтёт или предгенерить склеенное значение - см ответ 22154859 от fraks.
Ежели клиенты хотят видеть какие-то фиксированные варианты - можно на клиенте или сделать или по запросу на вариант или генерить поля со склейкой и в запрос вписывать.
Так же можно в запросе вернуть все исходные поля, а на клиенте склеивать указанные отдельным местом перед показом.
Как оно будет проще/изящнее в программе - зависит от остального дизайна системы, ну и выбора разработчика. :)
...
Рейтинг: 0 / 0
24.06.2020, 13:42
    #39972711
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок полей при выборке
Tonal
Возможных вариантов - вагон. :)
А как же самый очевидный? Написать обертку в виде хранимки GET_MODEL_NAME(id, тут_пачка_необязательных_настроечных_параметров) и все иф-ы спрятать в ней
select g.*, m.* from MODELS m LEFT JOIN GET_MADEL_NAME(m.id,0,1,1,1,0,0,null, ...) g on 1=1
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Порядок полей при выборке / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]