#sql #postgresql #union #information-schema
#sql #postgresql #объединение #информация-схема
Вопрос:
Я работаю в PostgreSQL, и я хочу объединить все таблицы с 11 столбцами базы данных под названием «postgres».
Список упомянутых таблиц я получаю со следующим запросом.
with
completo_tablas as (
select column_name, table_name from information_schema.columns
where table_schema='public'
)
--,tablas as (
select table_name--, count(column_name)
from completo_tablas
group by table_name
having count(column_name)=11
--)
Создание, что-то вроде:
Table_name
--------------
table1
table2
.
.
.
Проблема, которую я не могу решить, заключается в том, что я не могу объединить таблицы с 11 столбцами за определенный день; Я знаю, что могу сделать, кроме копирования имен таблиц, таких как:
Select * from tabla1 UNION select * from tabla2 UNION Sel....
Учитывая характер нашего бизнеса, количество таблиц со временем будет увеличиваться.
То, что я хочу, из-за характера нашего бизнеса, — это «динамический» запрос, в котором у меня нет имен таблиц, заданных вручную в запросе ОБЪЕДИНЕНИЯ.
Но что-то, с помощью чего вы всегда можете получить именно это, объединение всех таблиц с 11 столбцами
Спасибо за ваше время.
Комментарии:
1. Какое странное требование. Вы могли бы написать функцию, которая составляет SQL-запрос с
UNION
помощью s, а затем используетRETURN QUERY EXECUTE
его для его выполнения.2. Откуда вы знаете, что вы можете объединить эти таблицы на основе количества столбцов? Если в одной таблице есть, например
date
, столбец в той же позиции, что и в другой, напримерint
, столбец, вы все равно не можете их объединить. Но даже если типы данных совпадают, невозможно сделать это без динамического SQL (и, следовательно, функции PL / pgSQL). Но это звучит так, как будто у вас серьезная проблема без оттачивания вашей модели данных3. Абсолютно верно @a_horse_with_no_name объединение имеет 2 условия, которые должны быть применены специально, ни один из столбцов не должен быть одинаковым, а также типы данных, и я думаю, что это не связано с ОБЪЕДИНЕНИЕМ, подход OP сильно отличается от реального решения
4. @a_horse_with_no_name Это специальная и специфическая база данных, которую мы используем только для загрузки некоторых таблиц во внешнее программное обеспечение. Тем не менее, есть некоторые таблицы с менее чем 11 столбцами, но мы уверены, что единственные таблицы с 11 столбцами имеют одинаковую структуру.