Ir para conteúdo

POWERED BY:

Arquivado

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

alex.ve

diferença entre inner join e comparação where

Recommended Posts

Eae Galera tudo bem??

 

Bom tem uma duvida que me pertuba a um certo tempo e ninguem soube me responder ao certo ainda.

 

 

Qual a diferença entre um INNER JOIN ou uma comparação entre WHERE exemplo:

 

SELECT doadores.*, envios.* FROM doadores, envios WHERE doadores.id_doador = envios.id_doador;

Bom qual é melhor e por que ???

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alex beleza?

 

Nas duas, a solução pode ser encontrada.

 

No entanto eu sempre uso (e prefiro usar a cláusula JOIN). Por que?

 

Com join fica mais fácil a leitura e entendimento do código. Já vi códigos com mais de 10 tabelas. era coisa +- assim:

 

SELECT T1.campo1, T1.campo2, T1.campo3, *,T2.campo1, T2.campo2, T2.campo3, *FROM tabela1 T1,  tabela2 T2,  tabela3 T3, tabela4 T4,   tabela5 T5,  tabela6 T6,  tabela7 T7, tabela8 T8,  tabela9 T9,  tabela10 T10,  WHERE T1.cod = T2.cod AND T2.cod = T3.codT3.cod = T4.cod  AND T4.cod = T5.cod AND T5.cod = T6.cod AND T6.cod = T7.codT7.cod = T8.cod AND T8.cod = T9.cod AND T9.cod = T10.cod  AND T1.campo1 like '%teste%'AND T2.cod_categoria = 5

Minhas vistas até doeram para entender como esse select funciona.

Com JOIN você digita mais, porém fica mais legível.

 

Qualquer uma das formas funciona bem, não sei quanto ao desempenho, mas em relação a identação e leitura de código o Join fica muito mais profissional. Como segue.

 

 

SELECT T1.campo1, T1.campo2, T1.campo3, *,T2.campo1, T2.campo2, T2.campo3, *FROM tabela1 T1  INNER JOIN tabela2 T2 	   ON  T2.cod = T1.cod 	   AND T2.cod_categoria = 5INNER JOIN tabela3 T3 	   ON T3.cod = T2.codINNER JOIN tabela4 T4 	   ON T4.cod = T3.cod	INNER JOIN tabela5 T5 	   ON T5.cod = T4.cod INNER JOIN tabela6 T6 	   ON  T6.cod = T5.codINNER JOIN tabela7 T7 	   ON  T7.cod = T6.codINNER JOIN tabela8 T8 	   ON  T8.cod = T7.codINNER JOIN tabela9 T9  	   ON T9.cod = T8.cod INNER JOIN tabela10 T10 	   ON T10.cod = T9.cod  WHERE T1.campo1 like '%teste%'

Isso ai... espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente o JOIN fica mais elegante.

Ja vi tb AD´s defendendo que o JOIN permite uma performance melhor. Nunca vi comparativos mas a questão da performance é sempre citada.

 

O engraçado que aqui no meu serviço, e presto serviço em um gde banco, o pessoal do AD exigem que façamos nossos JOIN´s na clausula WHERE. Se usar INNER JOIN ou semelhante o pessoal do AD não aceita. A justificativa é de compatibilidade com vários sistemas legados e seu respectivos banco de dados.

 

Agora eu é que tenho um dúvida! http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

Qual é o pradão ANSI? O WHERE ou o INNER JOIN?

 

Ou os dois são padrão ANSI?

 

t+

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.