查询Oracle物化视图 - 模糊定义的列

时间:2012-10-31 10:34:10

标签: oracle view materialized-views

我在Oracle中查询视图时遇到问题。

以下是视图(my_cool_view)定义:

SELECT *
  FROM mview1 JOIN
       mview2 USING(col_id) 

其中 mview1 mview2 是物化视图。我无法访问此物化视图的定义。我试过这个问题:

select r.title from my_cool_view r;

并且 ORA-00918:列模糊定义 错误。我在my_cool_view中的列子集中遇到此错误。

如果我运行此查询:

select * from my_cool_view;

一切正常。

您在评论中询问desc my_cool_view,抱歉我无法提供架构信息,因为它是保密的。我唯一可以说它包含大约80列,只有一个(col_id)不会导致上述错误。

您有什么想法以及如何解决这个问题吗?

提前致谢。

很抱歉误导你,问题的第一个版本太糟糕了。

1 个答案:

答案 0 :(得分:2)

您可能有2列名称来自您加入的不同表/视图中的标题。如果选择*,那么这将起作用,因为重复的标题列将获得不同的别名(如TITLE1)。当您明确要求其中一个标题列时,数据库需要知道您想要哪一个,从而抛出错误。

只需确保标题列具有不同的别名:

   select EMP.TITLE EMP_TITLE, DEPT.TITLE DEPT_TITLE
   FROM   ...