Oracle SQL查询中的标识符无效

时间:2016-02-01 10:14:26

标签: sql oracle invalid-argument

我是编程的初学者,我无法在Oracle SQL上运行此查询。

我想要实现的是从表AYANTDROIT中选择id和名称(aya_id,aya_name),并为这些ID中的每一个添加另一个名称,该名称链接到另一个表中的id,{{ 1}}。问题是,在我对表格的查询中,我需要找回第一行中选择的ID,而不管我总是如何最终得到一个

  

ORA-00904:无效的标识符:aya.aya_id

这是我的代码:

BENEFICE

但是,当我提交以下查询时,aya.aya_id不会返回任何错误。

SELECT DISTINCT aya.aya_id, 
aya_name,
(SELECT aya_name
FROM AYANTDROIT aya2 inner join  
     (SELECT ben_aya_id,
      level lev,
      ben_ben_id
      FROM benefice 
      START WITH ben_aya_id = **aya.AYA_ID**
      CONNECT BY prior ben_ben_id = ben_aya_id
      ORDER BY lev desc
      )
 on aya2.aya_id = ben_ben_id
 where rownum = 1),
FROM AYANTDROIT aya
ORDER BY aya_name

有谁知道为什么我可以在第二种情况下调用此aya_id而不是第一种情况?这将是非常有用的:)

感谢您的所有时间,祝您度过愉快的一天!

1 个答案:

答案 0 :(得分:0)

问题是aya.aya_id在相关子查询中嵌套得太深了。有几种方法可以重建您的查询,这里有一个:

select distinct a1.aya_id, a1.aya_name, a2.aya_name
  from ayantdroit a1
  left join (
    select connect_by_root(ben_aya_id) root, ben_ben_id
      from benefice where connect_by_isleaf = 1
      start with ben_aya_id in (select aya_id from ayantdroit)
      connect by prior ben_ben_id = ben_aya_id) b
  on a1.aya_id = b.root
  left join ayantdroit a2 on a2.aya_id = b.ben_ben_id

请在Asktom网站上阅读similiar question