Подтвердить что ты не робот

Данные из двух таблиц в один вид

Можно ли захватить данные из двух таблиц (имеющих одинаковые поля) в одно представление. В принципе, поэтому представление видит данные, как если бы это была одна таблица.

4b9b3361

Ответ 1

Да, используя UNION -

CREATE VIEW vw_combined AS
   SELECT * FROM TABLE1
   UNION ALL
   SELECT * FROM TABLE2

... требует, чтобы было одинаковое количество столбцов, а типы данных совпадали в каждой позиции.

.. предпочтительнее, используя JOIN:

CREATE VIEW vw_combined AS
   SELECT * 
    FROM TABLE1 t1
    JOIN TABLE2 t2 ON t2.col = t1.col

Но я хочу предостеречь от зависимости от представлений - если они не материализованы, они являются только подготовленными операторами SQL. Отсутствие выгоды от производительности и может негативно повлиять на производительность, если вы создаете представление на основе другого. Кроме того, представления являются хрупкими - они могут измениться, и вы не будете знать, пока не будете использовать поддерживающий просмотр, если есть проблемы.

Ответ 2

create or replace view view_name as
select * from table_1
union all select * from table_2

Примечание: Столбцы в представлении устанавливаются во время создания представления. Добавление столбцов в table_1 и table_2 после создания представления не будет отображаться в view_name. Вам нужно будет повторно запустить указанный выше DDL, чтобы отобразить новые столбцы.

Если вы хотите, чтобы повторяющиеся строки были объединены в отдельные строки (но потенциально больше работали для сервера):

create or replace view view_name as
select * from table_1
union select * from table_2

В общем случае плохая форма использовать * в списке выбора, но если предположить, что запросы, использующие представление, будут выбирать именно то, что им нужно, я бы использовал его здесь вместо явного называния всех столбцов. (Тем более, что я не хотел бы добавлять имена столбцов при изменении таблицы_1 и table_2.)