PostgreSQL — ОБЪЕДИНЕНИЕ таблиц на основе количества столбцов

#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 столбцами имеют одинаковую структуру.