2012-05-08 2 views
1

데 조인 잘못된 식별자가 'E', cd_pergunta의 접두사입니다 ...잘못된 식별자가 나는 오류 ORACLE

and l.cd_pergunta = e.cd_pergunta 

이 쿼리를 실행할 때 :

select count(*) 
    from TEACEITE e 
inner join TEREGETA re on re.cd_etapa = e.cd_etapa 
         and re.id_reg_neg = 1.00000000 
where e.obrigatorio = 1 
    and not exists 
(select 1 
      from GESESSAO s 
     inner join GERESPOS r on r.sessao = s.sessao_resp 
           and r.resposta_log = 1 
     inner join GEEPE l on l.cd_quest = s.cd_quest 
          and l.ord_perg = r.ord_pergunta 
          and l.cd_pergunta = e.cd_pergunta 
     where s.cd_quest = e.cd_quest 
      and s.item = e.cd_etapa 
      and s.origem = 'GC' 
      and s.os_nf_orc_cont = 1.00000000) 

어떤 생각?

답변

6

문제는 별칭 e가 중첩 된 선택 항목 및 "유효하지 않은 식별자"에서 사용할 수 없다는 것입니다. s.cd_quest = e.cd_quest and s.item = e.cd_etapa 조건이 중첩 된 선택 대신 기본 선택의 일부가되도록 쿼리를 다시 작성할 수 있습니다.

편집 : 몇 가지 시나리오를 시도했는데 문제는 중첩 쿼리에서 조인 해결 중에 별칭 e를 사용할 수 없다는 것입니다. 내부 쿼리의 조인 조건에서 외부 테이블 별칭을 참조 할 수없는 것 같습니다.

내가이 쿼리는 당신이 원하는 것을 달성하면 나는 확실하지 않다, 작동 할 수 있지만 다음은

select count(*) 
    from TEACEITE e 
inner join TEREGETA re on re.cd_etapa = e.cd_etapa 
         and re.id_reg_neg = 1.00000000 
where e.obrigatorio = 1 
    and not exists 
(select 1 
      from GESESSAO s 
     inner join GERESPOS r on r.sessao = s.sessao_resp 
           and r.resposta_log = 1 
     inner join GEEPE l on l.cd_quest = s.cd_quest 
          and l.ord_perg = r.ord_pergunta 
     where l.cd_pergunta = e.cd_pergunta 
      and s.cd_quest = e.cd_quest 
      and s.item = e.cd_etapa 
      and s.origem = 'GC' 
      and s.os_nf_orc_cont = 1.00000000) 

를 작동 할 것이라고 생각, 비즈니스 로직뿐만 아니라 돌봐되어 있는지 확인하십시오.

0

Raam이 말했듯이 별칭의 조인에서는 별칭 e를 사용할 수 없습니다.
조인에 sql1999 구문을 사용하지 않도록 시도 할 수도 있습니다.

select count(*) 
    from TEACEITE e 
inner join TEREGETA re on re.cd_etapa = e.cd_etapa 
         and re.id_reg_neg = 1.00000000 
where e.obrigatorio = 1 
    and not exists 
(select 1 
    from GESESSAO s, GERESPOS r , GEEPE l 
    where r.sessao = s.sessao_resp 
    and r.resposta_log = 1 
    and l.cd_quest = s.cd_quest 
    and l.ord_perg = r.ord_pergunta 
    and l.cd_pergunta = e.cd_pergunta 
    and s.cd_quest = e.cd_quest 
    and s.item = e.cd_etapa 
    and s.origem = 'GC' 
    and s.os_nf_orc_cont = 1.00000000) 
관련 문제