我在选择查询中应用多个联接时收到错误

时间:2016-10-18 12:05:52

标签: sql oracle

当我运行它时,这是一个多连接查询

  

错误:ORA-00904:"来自$ _subquery $ _003"。" PSR_PART_NBR":无效标识符

但是,当我向下连接内部连接时,它可以正常工作。有人可以给我逻辑解释连接序列有什么问题。

select vsp.psr_sup_code supcom_sup_code,
       vsp.psr_part_nbr supcom_part_number,
       PSR_COM_CODE supcom_comm_code,
       '' supcom_comments,
       vpm.part_mod_user AS supcom_mod_user,
       vpm.part_mod_date AS supcom_mod_date,
       NULL supcom_map_id,
       vsp.psr_reg_code supcom_reg_code,
       vsp.psr_prdline_code supcom_prdline_code,
       1 supcom_prgs_flag, 
       NVL (vcs.segment_code, '*') sub_commodity_code 
FROM vin_psr_sup_prt_plnt_dtl vsp
   INNER JOIN vin_sup_supplier_mst vsm ON (vsp.psr_sup_code = vsm.supplier_code  AND vsm.supplier_code_type = 'mstr')
   INNER JOIN vin_core_part_mst vpm  ON (vsp.psr_part_nbr = vpm.part_number)
   LEFT OUTER JOIN v_commodity_segment_structure vcs ON (vpm.commodity_mapping_id = vcs.comdmap_id);

2 个答案:

答案 0 :(得分:0)

vsp.psr_sup_code为supcom_sup_code,        vsp.psr_part_nbr as supcom_part_number,        PSR_COM_CODE为supcom_comm_code,

答案 1 :(得分:-1)

我遇到了由版本11.2.0.4中的错误引起的这个问题,它在使用子查询或ansi join的查询中随机出现。

在我的情况下,我找到了根本原因:它是在我从11.2.0.4执行expdp并且架构具有MATERIALIZED VIEWS时引起的。然后我在其他DataBase中做了一个impdp(10g,11g甚至12c)。某种类型的diccionary问题导致了这个错误。

我解决了这个问题:

  1. EXPDP,不包括MATERIALIZED_VIEWS

  2. IMPDP。有一些与MATERIALIZED_VIEW对象相关的错误,被忽略了。

  3. 手动创建所有MATERIALIZED_VIEW对象。

  4. 使用“$ ORACLE_HOME / rdbms / admin / utlrp.sql”重新编译数据库中的所有对象

  5. 这是错误文档的摘录:

      

    错误17551261 ORA-904"来自$ _subquery $ _003"。查询   重写

         

    本说明简要概述了错误17551261。   内容最后更新时间:21-FEB-2014

         

    影响:

         

    产品(组件)Oracle Server(Rdbms)

         

    据信受影响的版本范围版本低于12.1

         

    确认受影响的版本 11.2.0.4

         

    平台影响Generic(受影响的所有/大多数平台)

         

    因此被认为是默认行为的回归:
      回归介绍于11.2.0.4

         

    已修复: 17551261的修复程序是第一个   包含在•12.1.0.1(基本版本)

    中      

    说明这个   问题在11.2.0.4中通过修复bug 14049796引入。

         

    如果出现与以下类似的ORA-904:
       ORA-00904:"来自$ _subquery $ _003"。" SUBSCRIBER_SID":无效的标识符   从使用ANSI连接的SQL语句中,可能就是这种情况   如果满足以下所有条件的错误:

         

    1)使用摘要重写

         

    2)修复bug:14049796目前(此修复程序包含在11.2.0.4中)

         

    3)errorstack包括kkogvcd()和kkqsgen()

         

    解决方法禁用查询重写