Thread: Re: Условие селекте
вс, 16 апр. 2023 г. в 18:26, vlads-yandex <vlads@ngs.ru>:
Здравствуйте!Как сделать запрос в posgresql видаSelect x FROM *Где * была разная таблица исходя из ввдоных условийSELECT x FROM CASE WHEN a=2 THEN table1 ELSE table2 ENDне работает.
SQL — декларативный язык, сущности должны быть определены на этапе синтаксического разбора запроса.
Синтаксиса подобного вашему нет.
Решается динамическим построением запроса (PL/pgSQL или любой другой PL) или же формированием запроса на стороне клиента,
т.е. условия вычисляете в приложении.
Однако, можно сформировать SQL-запрос в виде строки (тип text), получить его клиентом и отправить обратно базе на исполнение.
В частности, родной клиент psql имеет псевдо-команду \gexec, которая (1) исполняет запрос (2) получает ответ от базы и (3) отсылает ответ обратно в виде нового запроса.
Victor Yegorov