Array
(
)

Junção no SQL

Tquintao
   - 06 set 2006

Gostaria de saber se alguém pode me dizer a diferença conceitual entre a junção comum, tipo:

select departamento.nome ´Departamento´, funcionario.nome
from funcionario, departamento
where funcionario.coddepartamento = departamento.coddepartamento

e usando join, tipo:

select departamento.nome, funcionario.nome
from funcionario inner join departamento
on funcionario.coddepartamento = departamento.coddepartamento

Obrigado :lol:

Wagnerbianchi
   - 07 set 2006

Olá tquintão,

Bom, diferença não há nenhuma se o resulta condiz com a sua expectativa em relação à consulta. A única questão é quanto a legibilidade.
As associações INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN passaram a existir em uma implementação de uma versão ANSI SQL mais contemporânea, enquanto que, antes disso, as junções ou associações entre tabelas eram feitas de forma a montar quebra-cabeças como o seu primeiro exemplo.

Você ainda poderá implementar associações dessa maneira:

#Código

SELECT C.CLIENTE_NOME, A.AUTO_NOME
FROM LOCACAO AS L INNER JOIN CLIENTE AS 
ON L.CLIENTE_COD = C.CLIENTE_COD JOIN AUTOMOVEL AS A
ON L.AUTO_COD = A.AUTO_COD
ORDER BY C.CLIENTE_NOME


...usando os aliases ´AS´ você também poupa escrita de código e não exclui a legibilidade, que é tão importante quanto.

No MOC 2071, recomenda-se escrever JOIN, LEFT JOIN ou RIGHT JOIN, deixando o INNER e o OUTER de fora, isso vai de cada um!

Qualquer dúvida, continue o post!

Abraço!!

Wagnerbianchi
   - 07 set 2006

Olá tquintão,

Bom, diferença não há nenhuma se o resulta condiz com a sua expectativa em relação à consulta. A única questão é quanto a legibilidade.
As associações INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN passaram a existir em uma implementação de uma versão ANSI SQL mais contemporânea, enquanto que, antes disso, as junções ou associações entre tabelas eram feitas de forma a montar quebra-cabeças como o seu primeiro exemplo.

Você ainda poderá implementar associações dessa maneira:

#Código

SELECT C.CLIENTE_NOME, A.AUTO_NOME
FROM LOCACAO AS L INNER JOIN CLIENTE AS C
ON L.CLIENTE_COD = C.CLIENTE_COD JOIN AUTOMOVEL AS A
ON L.AUTO_COD = A.AUTO_COD
ORDER BY C.CLIENTE_NOME


...usando os aliases ´AS´ você também poupa escrita de código e não exclui a legibilidade, que é tão importante quanto.

No MOC 2071, recomenda-se escrever JOIN, LEFT JOIN ou RIGHT JOIN, deixando o INNER e o OUTER de fora, isso vai de cada um!

Qualquer dúvida, continue o post!

Abraço!!

Tquintao
   - 08 set 2006

Caro Wagner,

Obrigado pela resposta, ela satisfez a minha dúvida.

Abraço