【问题标题】:consider subquery of the same table in materialized view creation在物化视图创建中考虑同一张表的子查询
【发布时间】:2021-09-13 19:43:49
【问题描述】:

下午好,

如何编辑我的选择以避免实体化视图中出现子查询错误消息。

这里不允许使用 ORA-22818 子查询表达式

create materialized view vista1
refresh complete on demand
as

select f1.codigo,f1.Car,f1.codCard,f1.descripcion,f1.caracteristicas,
  f1.razonsocial
  f1.codigoAbs,
  f1.codigoCarAbs,
  (select ff.Car 
   from persona ff 
   where ff.codigo=f1.codigoabs 
     and ff.codCard=f1.codigoCarAbs 
     and rownum=1) as "absorbed reference"
from persona f1

表和列的逻辑如下:

“角色”表有列标识其他被吸收或受监护的人,这些列是:

-codeABSycodigoCarABS

  • 我无法编辑表格结构或创建其他表格。

说明:

1-“codigo”字段是“persona”表的主键。

2-“codCard”字段是“persona”表的唯一代码。

3-“codeABS”字段,表示被吸收的“persona”的代码,属于同一个“persona”表的代码。

4-“codigoCarABS”字段,表示被吸收的“persona”的CAR代码,属于同一个“persona”表的代码。

【问题讨论】:

    标签: oracle oracle11g oracle10g oracle-sqldeveloper


    【解决方案1】:

    加盟怎么样?

    SELECT f1.codigo,
           f1.car,
           f1.codcard,
           f1.descripcion,
           f1.caracteristicas,
           f1.razonsocial,
           f1.codigoabs,
           f1.codigocarabs,
           f2.car AS absorbed_reference
    FROM persona f1
    JOIN persona f2 ON f1.codigo = f2.codigoabs AND f1.codigocarabs = f2.codcard;
    

    ROWNUM = 1 你使用的暗示可能有 2 行或更多行;我相信“我的”查询会错过 where 子句,这将确保只获取来自 f2 的一个值。是否有一些时间戳列,序数,......这有帮助?如果不是,并且您并不真正关心要返回哪个值,则可以申请例如MIN 函数到 f2.car 并将其余选定列放入 group by 子句:

    SELECT f1.codigo,
           f1.car,
           f1.codcard,
           f1.descripcion,
           f1.caracteristicas,
           f1.razonsocial,
           f1.codigoabs,
           f1.codigocarabs,
           MIN(f2.car)AS absorbed_reference
    FROM persona f1
    JOIN persona f2 ON f1.codigo = f2.codigoabs
                       AND f1.codigocarabs = f2.codcard
    GROUP BY f1.codigo,
             f1.car,
             f1.codcard,
             f1.descripcion,
             f1.caracteristicas,
             f1.razonsocial,
             f1.codigoabs,
             f1.codigocarabs;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2019-05-08
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多