Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

PostgreSQL select where table from select

PostgreSQL select where table from select
Я
   gerodoth
 
09.06.20 - 22:19
Доброго дня, помогите составить запрос.
Есть куча баз похожих но немного разных по наименованиям таблиц, все крутятся на постгресе.
Нужно отобрать в таблицах с РН не активные записи
Что-то типа
SELECT * FROM (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%') WHERE _active = False
запрос в скобках отрабатывает, а как его результат использовать в запросе снаружи - знаний не хватает.
Спасибо.
   youalex
 
1 - 09.06.20 - 22:31
CTE : https://www.postgresqltutorial.com/postgresql-cte/

with cte1 as (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%') WHERE _active = False)
select * from cte1
   youalex
 
2 - 09.06.20 - 22:33
т.е.
with cte1 as (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%')
select * from cte1 WHERE _active = False
   gerodoth
 
3 - 10.06.20 - 08:06
спасибо!
   gerodoth
 
4 - 10.06.20 - 08:40
немного не доходит
последний запрос выдает ошибку, а
with cte1 as (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%')
select * from cte1
выдает список баз в столбик
   bolero
 
5 - 10.06.20 - 09:51
(1) да, ты сам-то пробовал?
> Common Table Expressions or CTEs, can be thought of as defining temporary tables that exist just for one query

(0) я похожую задачу решаю в два захода: одним запросом составляю список таблиц, у которых _есть_ такое поле (а оно например может быть не у всех таблиц)
по шаблону заполняю второй запрос (важно выбирать только конкретные поля) и соединяю его UNION ALL

типа того:
SELECT _Ref, _Period,'РН.ТоварыНаСкладах' as table_name WHERE _active=False
UNION ALL
SELECT _Ref, _Period,'РН.ТоварыОрганизаций' as table_name WHERE _active=False

   gerodoth
 
6 - 10.06.20 - 11:09
мне б так чтоб вообще одной универсальной командой по разным базам. иначе проще в 1с получать список баз из структуры бд и генерить запрос для постгреса, оставляю этот вариант на потом если первым не выйдет.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.