暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 根据视图的结果选择视图

ASKTOM 2021-01-18
210

问题描述

大家好,

我在和一个观点作斗争。视图的结果可以是具有相同字段的3个不同视图中的1行。
有人可以指出正确的方向,请如何思考?:)

非常基本,这是我的问题:

/* MAINVIEW */
SELECT * FROM 

(SELECT * FROM VIEW1)  --returns n rows

/* IF VIEW1 IS EMPTY THEN SELECT ALL FROM VIEW2 */
(SELECT * FROM VIEW2)  -- returns n rows

/* IF VIEW2 IS EMPTY THEN SELECT VIEW3 (=HAS ALWAYS DATA) */
(SELECT * FROM VIEW3)  -- returns 1 row

复制


我不需要完整的代码,只是正确方向的提示;)。

提前谢谢。

专家解答

这样的东西可能会工作:

select * from view1
union  all
select * from view2
where  not exists ( select * from view1 )
union  all
select * from view3
where  not exists ( select * from view1 )
and    not exists ( select * from view2 )
复制


虽然它导致运行view1查询三次和view2查询两次,所以可能会很慢。

接受这些视图的基础查询并将不存在检查写入这些视图可能会更快。或者可能有更好的方法,没有示例表和数据很难说。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论