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

Posted

技术标签:

【中文标题】根据另一个表中的值更新视图【英文标题】:Update View based on value from another table 【发布时间】:2013-08-19 10:22:08 【问题描述】:

我有两张桌子

表 1:

id 名称 item_ref item_name ---------- ---------- ---------- ---------- 101 abc 1 项目1 102 xyz 2 项目2

表 2:

item_ref item_name end_date ---------- ---------- ---------- 1 项1 空 2 项目 2 01-AUG-13 3 项 3 空

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

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

查看 - 结果

id 名称 item_ref item_name end_date ---------- ---------- ---------- ---------- ---------- 101 abc 1 item1 null

这里 102 不存在,因为 item2 已过期。

请帮忙 (使用 Oracle)

【问题讨论】:

这是非常基本的 SQL。掌握任何 SQL 教程,阅读 JOIN,这将是小菜一碟。 只有在没有得到答案的情况下才会提出问题。 【参考方案1】:

只需创建视图!

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

【讨论】:

以上是关于根据另一个表中的值更新视图的主要内容,如果未能解决你的问题,请参考以下文章

如何根据oracle中另一个表中的值更新一个表中的字段[重复]

根据另一个表中的值插入和/或更新记录

更新查询以根据另一表中的值更改一个表中列的现有值

如何根据与另一个表中的值的比较来更新列

根据另一张表中的值更新一张表

根据另一个 data.table 中的值更新 data.table