O que exatamente esse (+) faz?

9 respostas
moacirjava
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

9 Respostas

RafaFloripa

join

moacirjava

Que tipo de join?
Outer join?
Left join?
Right join?

renamed

eu ja tinha visto

*=

mas

+=

é a primeira vez.

De qualquer forma a boa é escrever explicitamente o que vc ta fazendo “inner join”, “left join”, “natural join” etc… nosso cérebro trabalha melhor com palavras do que com símbolos :roll:

Marky.Vasconcelos

Simples, de qual lado do igual ele está?

(+ =) = Left Join
(= +) = Right Join

moacirjava

renamed:
eu ja tinha visto

*=

mas

+=

é a primeira vez.

De qualquer forma a boa é escrever explicitamente o que vc ta fazendo “inner join”, “left join”, “natural join” etc… nosso cérebro trabalha melhor com palavras do que com símbolos :roll:

Queria saber o que o (+) significa nesse caso.

moacirjava

Marky.Vasconcelos:
Simples, de qual lado do igual ele está?

(+ =) = Left Join
(= +) = Right Join

Então quer dizer que:

where  a.col_a (+) = b.col_b => tabela A left join tabela B

e 

where  a.col_a = b.col_b (+) => tabela A right join tabela B

É isso?

Marky.Vasconcelos

moacirjava:
Marky.Vasconcelos:
Simples, de qual lado do igual ele está?

(+ =) = Left Join
(= +) = Right Join

Então quer dizer que:

where  a.col_a (+) = b.col_b => tabela A left join tabela B

e 

where  a.col_a = b.col_b (+) => tabela A right join tabela B

É isso?

Yeah, pelo que me lembro de SQL sim.

CarlosEduardoDantas

Moacir, esta query está fazendo um full outer join.

Na query superior ao union tem um left outer join para tab_a, ou seja, trará tudo de tab_a mesmo se não existir o correspondente em tab_b, na query inferior é o contrário. Como se trata de um union, está fazendo um full outer join. Agora, se não estou enganado, o union (sem union all) traz todos os registros, não eliminando duplicação. Então acredito que a query está furada

moacirjava

Não fui eu quem fez esse select, apenas achei ele na internet. O que eu mais preciso é saber como funciona o lance do (+) que eu nunca tinha visto antes…
Mas o sql é o de menos, o lance mesmo é o que o pessoal do fórum já me respondeu a respeito do (+) ok?!

Criado 24 de fevereiro de 2011
Ultima resposta 24 de fev. de 2011
Respostas 9
Participantes 5