Diferença com where ou on

1 resposta Resolvido
M

Prezados,
Uso oracle me deparei com uma duvida que creio que para geral é simples porem gostaria de confirmar se o que estou pensando esta correto, entao la vai a duvida:
qual a diferença entre:
select*
from tabela1 a left join tabela2 b on a.chave=b.chave and a.versao=1

======================diferença entre======================
select*
from tabela1 a left join tabela2 b on a.chave=b.chave
where a.versao=1

obrigado!

1 Resposta

A
Solucao aceita

Você pode ver a diferença aqui: https://www.db-fiddle.com/f/sK3PwUFRDDqtpWUYCFKi6Y/0

Quando poe a clausula a.versao=1 no join, essa condiçao vale apenas para a parte que faz a correspondencia dos registros. Ou seja, você está dizendo que só há registros relevantes na tabela2, quando a versao na tabela1 for 1.

Quando poe a clausula no where, você está filtrando do resultado final, que apenas registros da tabela1 com a versao 1 vao aparecer.

Criado 10 de outubro de 2017
Ultima resposta 10 de out. de 2017
Respostas 1
Participantes 2