GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Diferença com where ou on


#1

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!


#2

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.