从 table 创建物化视图,同时添加来自不同 table 的缺失值
Create Materialized View from table whilst adding missing values sourced from different table
我正在尝试创建一个由现有 table 的所有列组成的物化视图,同时根据不同 [=33] 中的日期在日期列中添加任何缺失值=] 在单独的(名字)列中按值连接。所以两个 table 都有日期和匹配的名字列,但在主要的 table 中,一些日期字段丢失了,需要从另一个 table.
中获取
我在 SELECT 声明中这样做,但我不确定这是否是最好的方法。任何想法表示赞赏。
到目前为止我有这个:
CREATE materialized view mviewname as
(SELECT a.col1, a.col2, a.firstname, NVL(a.dateofbirth,
(SELECT b.dateofbirth from FillTable b JOIN MainTable
c on b.firstname=c.firstname)) from MainTable a);
显然这是不正确的,我收到 single-row subquery returns more than one row
错误的原因很明显。
我也不确定 MAINTABLE 是否应该使用别名两次,或者 "c" 是否也应该只是 "a"。
非常感谢任何帮助。
以防万一回复:提问,我确实做了类似的 但只问了一半问题,因此我的第一个 post 应该措辞更好,抱歉!
左外连接应该可以满足你的要求。
试试这个。
SELECT a.col1,
a.col2,
a.firstname,
NVL(a.dateofbirth, b.dateofbirth)
FROM maintable a
LEFT OUTER JOIN filltable b ON a.firstname = b.firstname;
但是,b table 应该只包含每个名字的一条记录,否则您可能会得到一个名字的多条记录。
另外,为什么要创建实体化视图。如果卷不是很大,一个简单的视图应该可以满足您的目的。
请阅读以下 Oracle 文档以获取有关联接的信息。
https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm
如果您坚持要创建实体化视图,那么您可能需要考虑为其定义一个刷新策略。
这里有一些有用的链接。
https://docs.oracle.com/database/121/DWHSG/refresh.htm
https://docs.oracle.com/cd/B28359_01/server.111/b28326/repmview.htm
我正在尝试创建一个由现有 table 的所有列组成的物化视图,同时根据不同 [=33] 中的日期在日期列中添加任何缺失值=] 在单独的(名字)列中按值连接。所以两个 table 都有日期和匹配的名字列,但在主要的 table 中,一些日期字段丢失了,需要从另一个 table.
中获取我在 SELECT 声明中这样做,但我不确定这是否是最好的方法。任何想法表示赞赏。
到目前为止我有这个:
CREATE materialized view mviewname as
(SELECT a.col1, a.col2, a.firstname, NVL(a.dateofbirth,
(SELECT b.dateofbirth from FillTable b JOIN MainTable
c on b.firstname=c.firstname)) from MainTable a);
显然这是不正确的,我收到 single-row subquery returns more than one row
错误的原因很明显。
我也不确定 MAINTABLE 是否应该使用别名两次,或者 "c" 是否也应该只是 "a"。
非常感谢任何帮助。
以防万一回复:提问,我确实做了类似的
左外连接应该可以满足你的要求。
试试这个。
SELECT a.col1,
a.col2,
a.firstname,
NVL(a.dateofbirth, b.dateofbirth)
FROM maintable a
LEFT OUTER JOIN filltable b ON a.firstname = b.firstname;
但是,b table 应该只包含每个名字的一条记录,否则您可能会得到一个名字的多条记录。
另外,为什么要创建实体化视图。如果卷不是很大,一个简单的视图应该可以满足您的目的。
请阅读以下 Oracle 文档以获取有关联接的信息。
https://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm
如果您坚持要创建实体化视图,那么您可能需要考虑为其定义一个刷新策略。
这里有一些有用的链接。
https://docs.oracle.com/database/121/DWHSG/refresh.htm https://docs.oracle.com/cd/B28359_01/server.111/b28326/repmview.htm