Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > получение значения поля в запросе


Автор: wtbh 2.4.2023, 10:28
Всем привет
Подскажите как можно сделать вот такое

Код

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


можно ли как то получить значение поля по которому происходит сортировка? 
Спасибо 

Автор: Akina 2.4.2023, 14:28
Вопрос непонятен.

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

Автор: wtbh 3.4.2023, 08:47
Код

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 написать так что бы узнать по какому полю(полям) происходит сортировка

Автор: Akina 3.4.2023, 16:59
Ну так это же 
Код

select 'column1', * 
from table1 
order by column1

Автор: wtbh 3.4.2023, 18:58
когда order by меняется динамически как узнать?

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

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

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

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

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

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

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

Автор: LSD 5.4.2023, 23:16
Цитата(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

?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)