Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получение значения поля в запросе 
:(
    Опции темы
wtbh
Дата 2.4.2023, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2008

Репутация: нет
Всего: нет



Всем привет
Подскажите как можно сделать вот такое

Код

select 
  case when ?orderFields[0]? = 'f1' then 'zzzz' else '' end
from table1
order by f1


можно ли как то получить значение поля по которому происходит сортировка? 
Спасибо 
PM MAIL   Вверх
Akina
Дата 2.4.2023, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Вопрос непонятен.

Выложите пример - исходные данные в виде CREATE TABLE + INSERT INTO (десяток записей), и требуемый результат запроса для этих данных с подробными пояснениями.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
wtbh
Дата 3.4.2023, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2008

Репутация: нет
Всего: нет



Код

CREATE TABLE test.table1 (
    column1 varchar NULL,
    column2 varchar NULL,
    column3 varchar NULL
);


INSERT INTO test.table1 (column1,column2,column3)    VALUES ('1','2','3');
INSERT INTO test.table1 (column1,column2,column3)    VALUES ('11','22','33');



select XXX , * from table1 order by column1

хочется получить вот такой результат
column1, 1, 2, 3
column1, 11, 22, 33


как в select написать так что бы узнать по какому полю(полям) происходит сортировка

PM MAIL   Вверх
Akina
Дата 3.4.2023, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Ну так это же 
Код

select 'column1', * 
from table1 
order by column1



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
wtbh
Дата 3.4.2023, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2008

Репутация: нет
Всего: нет



когда order by меняется динамически как узнать?
PM MAIL   Вверх
Akina
Дата 3.4.2023, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(wtbh @  3.4.2023,  19:58 Найти цитируемый пост)
когда order by меняется динамически как узнать?

ГДЕ? КЕМ? Вот именно в том месте и спрашивай. Там же до кучи можешь потребовать записи информации об использованном выражении сортировки в некую переменную, которую потом подставишь как параметр в запрос вместо написанного мной литерала.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
wtbh
Дата 4.4.2023, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 15.5.2008

Репутация: нет
Всего: нет



есть hql который генерируется после чего hibernate генерирует sql. есть Вычисляемое поле @Formula сущности @Entity в котором можно написать часть полноценного sql но узнать что указано в order by можно только sql поэтому и хочется понять можно ли в select получить список полей по которым сортируется запрос.  
PM MAIL   Вверх
Akina
Дата 4.4.2023, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Цитата(wtbh @  4.4.2023,  10:30 Найти цитируемый пост)
хочется понять можно ли в select получить список полей по которым сортируется запрос.

Для решения задачи в поставленных условиях надо перехватить поданный на SQL сервер запрос, внести в него изменения и затем выполнить. Возможно ли такое в Постгрессе - я не в курсе. 

Плюс надо учитывать, что Hibernate может неправильно отнестись к тому, что выходная структура возвращённого набора несколько не совпадает с ожидаемой.

Скажем, в MySQL есть Query Rewrite Plugin, который в минимальных пределах позволяет вмешиваться в текст выполняемого запроса и модифицировать его... может, и для Постгресса есть нечто подобное.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 5.4.2023, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: 3
Всего: 537



Цитата(wtbh @  4.4.2023,  10:30 Найти цитируемый пост)
есть hql который генерируется после чего hibernate генерирует sql. есть Вычисляемое поле @Formula сущности @Entity в котором можно написать часть полноценного sql но узнать что указано в order by можно только sql поэтому и хочется понять можно ли в select получить список полей по которым сортируется запрос.  

В Hibernate есть StatementInspector который позволяет получить SQL запрос перед его выполнением, но его надо парсить. Проще через рефлексию получить значение @Formula, но опять же вопрос что делать с
Код

case when ?orderFields[0]? = 'f1' then 'zzzz' else '' end

?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1492 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.