关于ORACLE物化视图是否支持外连接

阿蛋111 2014-08-02 04:45:16
--创建物化视图日志
create materialized view log on 数据产出_字典映射表 WITH rowid,sequence
(
映射值,原类别编码,有效
)
INCLUDING NEW VALUES ;

create materialized view log on 门诊管理_门诊处方 WITH rowid, sequence
(
机构编码,发票序号,归类编码,总金额
)
INCLUDING NEW VALUES ;

--创建物化视图
CREATE MATERIALIZED VIEW V_YLFW_MZ_MZSFJL_GLJE
REFRESH FAST with rowid ON DEMAND
AS select k.机构编码,k.发票序号,r.映射值,sum(总金额) as 总金额
from 门诊管理_门诊处方 k,数据产出_字典映射表 r
where k.归类编码 = r.映射值(+)
and r.原类别编码(+)='GB_009001' and r.有效(+)='1'
group by k.机构编码,k.发票序号,r.映射值;

我在创建物化视图的时候,提示 ORA-12015: 不能从复杂查询中创建一个可快速刷新的实体化视图;
请问,ORACLE物化视图是否支持外连接?
如果支持,需要如何解决上述问题?
之前测试内连接是没问题的.
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿蛋111 2014-08-04
  • 打赏
  • 举报
回复
引用 2 楼 sjcss 的回复:
你这种情况不是不能用物化视图,而不能用实现物化视图的fast刷新,你试试complete看行不行先~ 外连接要想fast刷新:WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上
搞定了. 完全刷新对于数据量较大的表还是无法满足需求的. 多表连接的物化视图想要使用fast刷新时, 首先,select 语句中包含到的每一个表都需要创建视图日志; 其次,视图日志中需要指定在select语句和where条件中用到的该表的字段; 第三,在select中必须包含所涉及到的所有表的rowid, 第四,外连接不能使用标志sql语法,应使用(+)这种oracle固有语法. 虽然没有完全解答我的问题,但还是把分给你.
美到心痛 2014-08-03
  • 打赏
  • 举报
回复
你这种情况不是不能用物化视图,而不能用实现物化视图的fast刷新,你试试complete看行不行先~ 外连接要想fast刷新:WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上
阿蛋111 2014-08-02
  • 打赏
  • 举报
回复
大婶们今天都去泡妹子了么,求解答,在网上也差了很多资料,有的说不支持外连接,有的给出的语句又明显是外连接方式

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧