2010-07-16 7 views

ответ

19

Да, с помощью UNION -

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

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

..preferrably, используя JOIN:

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

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

+3

«предпочтительнее, используя JOIN» Только если это соответствует требованиям. Я не заметил, что строки в таблице1 и таблице2 были связаны с тем, как объединение будет иметь смысл. ОП заявила: «У них одинаковые поля», поэтому профсоюз будет работать, если типы совпадают. –

+1

@Shannon Severance: Я не вижу вреда в предложении обзора логики или предоставления дополнительной информации, которая может быть полезна. –

+4

Я согласен, что было хорошо упомянуть о соединении, потому что есть два способа объединить две таблицы, которые делают результаты длиннее или шире таблиц. (+1 для этого BTW.) Я просто не думаю, что кто-то предпочитает другого, не зная наверняка, что пытается сделать OP. –

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

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

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

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

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

+0

+1: Я забыл упомянуть о столбцах при создании –

+0

@OMG Ponies: Это немного изменило меня, это свежо в банках памяти. –

Смежные вопросы