一个视图中的Oracle表

时间:2009-03-11 14:49:11

标签: database oracle

我在oracle数据库中有2个表,它们具有相同的列名和类型。 例如:

表1:id,name,comment
表2:id,name,comment

如何在一个视图中显示两个表中的所有数据?

5 个答案:

答案 0 :(得分:2)

如果您想要4个单独的列,只需使用别名,就像使用任何其他选择一样。

create or replace view vw_my_view as
  select t1.id t1_id
        ,t1.comment t1_comment
        ,t2.id t2_id
        ,t2.comment t2_comment
  from table1 t1
    inner join table2 t2 on join condition
  where filter conditions

编辑当然,您的表格会以某种方式相互关联,否则您的视图单行无法表达任何意义。因此,您将有一个连接条件来连接两个表,例如t1.id = t2.id

如果您希望它们分为两列,请使用Union

create or replace view vw_my_view as
  select id
        ,comment
  from table1
  union all                -- use ALL unless you want to lose rows
  select id
        ,comment
  from table2;

答案 1 :(得分:0)

为什么两张相同的桌子?无论“不要重复自己”发生了什么?对不起,听起来像是一个糟糕的设计气味。

无论你创造两张桌子的灵感是什么,我敢打赌它可能是另一个属性来区分一个表中的两个组。

答案 2 :(得分:0)

SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2

(如果你想要重复,则为UNION ALL)

答案 3 :(得分:0)

我同意duffymo的说法,但如果有充分理由,那么UNION会为你做这件事。 e.g。

SELECT id, name, comment FROM Table1
UNION
SELECT id, name, comment FROM Table2

答案 4 :(得分:0)

select * from table1
union
select * from table2;