根据另一个表中的值更新视图

时间:2013-08-19 10:22:09

标签: sql oracle view

我有两张桌子

表1:

    id           Name        item_ref     item_name
----------    ----------    ----------    ----------
    101          abc            1           item1
    102          xyz            2           item2

表2:

 item_ref     item_name      end_date
----------    ----------    ----------
    1           item1          null
    2           item2         01-AUG-13
    3           item3          null

现在我想创建一个视图,其中只包含表1中表2中的项目尚未过期的项目。

例如,对于上述情况,结果应为

查看 - 结果

    id           Name        item_ref     item_name      end_date
----------    ----------    ----------    ----------    ----------
    101          abc            1           item1         null

此处102不存在,因为item2已过期。

请帮忙 (使用Oracle)

1 个答案:

答案 0 :(得分:0)

只需创建视图!

CREATE VIEW schema.view_name AS
  SELECT a.id, a.name, a.item_ref, a.item_name, b.end_date
     FROM table1 a   
          JOIN   
          table2 b
       ON (a.item_ref = b.item_ref)
    WHERE ( b.end_date IS NULL ) OR (b.end_date > SYSDATE ) ;

每次查询视图时,都会执行子查询,因此视图数据将始终更新。 有关详细信息,请查看CREATE VIEW上的ORACLE语言参考:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_8004.htm