Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

deathcon4

sql, uso de on e where

Recommended Posts

Estou com dúvidas no uso das clausulas on e where no inner join. As vezes aparece somente on e as vezes somente o where.para fazer a comparação entre as tabelas do banco, isso está deixando-me confuso. Quando usar o on e quando usar o where. Também vi que dá para usar os dois juntos. Em inner join eu vi on sem where, com right join e left join com os dois. Posso usar select tabela.campo from tabela inner join where tabelaA.campo = tabelaB.campo where condição. Condição, por exemplo, cidade que seja Rio de Janeiro. em vez de select tabela.campo from tabela inner join on tabelaA.campo = tabelaB.campo where condição.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No join explícito ON

select *
from USER_TABLES
  inner join user_tab_columns on user_tables.table_name = USER_TAB_COLUMNS.TABLE_NAME

No join implicito WHERE

select *
from USER_TABLES , USER_TAB_COLUMNS
where USER_TABLES.TABLE_NAME = USER_TAB_COLUMNS.TABLE_NAME

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tinha um problema parecido quando eu aprendi os joins, mas acho que a ideia é basicamente a seguinte, um jeito mais "comum" de explicar. O on é obrigatório no caso de joins, ele identifica as chaves que são iguais em duas tabelas distintas, por exemplo, em uma tabela de usuário e outra tabela de grupos de usuário, se você quiser mostrar todos os usuários e seus devidos grupos, então você poderia fazer um Inner Join na tabela Grupos de Usuário onde a chave que ligaria os dados em ambas as tabelas seria o ID do usuário.

 

O where é a filtragem geral, ela é aplicada depois do join, ou seja, ela vale para quando os usuários e os grupos já estão unidos em uma unica tabela, então imagine que agora você queira filtrar os grupos para "Admin", ai depois do join você usar um WHERE na tabela grupo que estará disponível para uso.

 

Espero que você tenha entendido :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já fiz planos de execução para queries com joins implícitos e explícitos em Oracle e estes foram iguais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.