|
PostgreSQL select where table from select
| ☑ |
0
gerodoth
09.06.20
✎
22:19
|
Доброго дня, помогите составить запрос.
Есть куча баз похожих но немного разных по наименованиям таблиц, все крутятся на постгресе.
Нужно отобрать в таблицах с РН не активные записи
Что-то типа
SELECT * FROM (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%') WHERE _active = False
запрос в скобках отрабатывает, а как его результат использовать в запросе снаружи - знаний не хватает.
Спасибо.
|
|
1
youalex
09.06.20
✎
22:31
|
CTE :
with cte1 as (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%') WHERE _active = False)
select * from cte1
|
|
2
youalex
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
|
|
3
gerodoth
10.06.20
✎
08:06
|
спасибо!
|
|
4
gerodoth
10.06.20
✎
08:40
|
немного не доходит
последний запрос выдает ошибку, а
with cte1 as (SELECT table_name FROM information_schema.tables where table_name like '%accumrg%')
select * from cte1
выдает список баз в столбик
|
|
5
bolero
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
|
|
6
gerodoth
10.06.20
✎
11:09
|
мне б так чтоб вообще одной универсальной командой по разным базам. иначе проще в 1с получать список баз из структуры бд и генерить запрос для постгреса, оставляю этот вариант на потом если первым не выйдет.
|
|