Full Outer Join e (+)

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Bom dia Amigos,
Td bom com vocês?
Então..outro dia me deparei com essa situação!!

Informações adicionais: BD : 10G e SQLPlus 8.0

Exp:
Situação A

Selecionar tudo

select a.col_a,b.col_b1,b.col_b2
  from tab_a a full outer join tab_b b
on(a.col_a = b.col_b)
order by a.col_a;
Será que eu consigo fazer isto amigos? :roll:

Situação B

Selecionar tudo

select a.col_a,b.col_b1,b.col_b2
  from tab_a a, tab_b b
where a.col_a (+) = b.col_b(+)
order by a.col_a;
Aparece esta msg na situação B:
ERRO na linha 3:

Selecionar tudo

ORA-01468: a predicate may reference only one outer-joined table
Alguém sabe o porque..hihih? :oops:

Abs Hahu :wink:
Ps: Que Deus abençõe a Todos!
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

A sintaxe utilizando o operador (+) só funciona em um dos lados da expressão, e portanto não permite um full outer join...

Uma alternativa seria utilizar o union, fazendo o left outer join e o right outer join em duas cláusulas separadas:

Selecionar tudo

select a.col_a
     , b.col_b1
     , b.col_b2 
from   tab_a a
     , tab_b b 
where  a.col_a (+) = b.col_b
union
select a.col_a
     , b.col_b1
     , b.col_b2 
from   tab_a a
     , tab_b b 
where  a.col_a = b.col_b (+)
order by col_a
[/code]
Hahu
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 147
Registrado em: Qui, 16 Mar 2006 11:26 am
Localização: São Paulo
O mundo gira muito!!

Fala rogenaro,
bom dia...vlw pela informação :) -m
Abs Hahu
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes