Действительно ли возможно захватить данные из двух таблиц (которые имеют те же поля) в одно представление. В основном, таким образом, представление видит данные, как будто это была одна таблица.
Да, использование 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. Нет никакого преимущества в производительности и может негативно повлиять на производительность, если вы создадите представление на основе другого. Кроме того, представления хрупкие - они могут меняться, и вы не узнаете, пока не воспользуетесь вспомогательным представлением, если возникнут проблемы.
create or replace view view_name as
select * from table_1
union all select * from table_2
Примечание: Столбцы в представлении задаются в момент создания представления. Добавление столбцов в таблицу_1 и таблицу_2 после создания представления не будет отображаться в имени_представления. Вам нужно будет повторно выполнить вышеупомянутый DDL, чтобы новые столбцы появились.
Если вы хотите, чтобы дублирующиеся строки были сведены к одиночным строкам (но потенциально больше работы для сервера):
create or replace view view_name as
select * from table_1
union select * from table_2
Вообще, использовать *
в списке select - плохая форма, но если предположить, что запросы, использующие представление, будут выбирать только то, что им нужно, я бы использовал это здесь вместо явного именования всех столбцов. (Тем более что я бы не хотел добавлять имена столбцов при изменении таблиц table_1 и table_2)