Existem vários tipos de JOIN, que fazem cruzamento de dados das tabelas de formas diferentes. Nesse site iremos ver as diferenças entre junções internas e externas do SQL. Respondendo algumas questões básicos sobre o uso de cada tipo de join, usando exemplos práticos com select's e exemplos prontos.
Questões que serão respondidas no artigo:
Quais os principais tipos de JOIN?
Quais os três tipos básicos de associação join?
O que faz e como funciona cada tipo de JOIN?
O que faz o INNER JOIN?
O que faz o Outer JOIN?
O que é Full Outer JOIN?
O que é full join SQL?
O que é natural JOIN?
Como funciona o JOIN?
Como Fazer um INNER JOIN, LEFT JOIN e RIGHT JOIN em SQL?
Como usar o Full Outer Join?
Como usar natural join?
Qual a diferença de Inner JOIN e JOIN?
Qual é a diferença entre INNER JOIN e OUTER JOIN?
Qual a diferença do Inner JOIN para o LEFT JOIN?
Qual a diferença de LEFT JOIN e Left Outer Join?
Quais as diferenças entre Natural Join e Inner Join?
Quando usar LEFT JOIN?
Quando usar o right join?
Quando usar natural JOIN?
Quando usar Left e Right Join?
É possível fazer um inner join de uma tabela para ela mesma?
Talvez antes de continuar você precise de um conhecimento prévio então de uma olhada em:
O que é uma instrução SQL?
O que significa a expressão JOIN?
O que é comando SQL JOIN e para que serve?
Como fazer um JOIN no SQL?
Veja mais em:
Como funciona uma Trigger?
Quais os principais comandos SQL?
Quais são as principais funções de agregação?
Quais são os 4 tipos possíveis de comandos SQL?
Qual dos seguintes não é um tipo de JOIN usado em SQL?
Qual a diferença entre JOIN e Union?
Quais são os 3 grupos de instruções em linguagem SQL?
Qual SQL é mais usado?
Quais são os três tipos de blocos Pl-SQL?
O que são tipos UNION?
Para que serve a cláusula having?
exemplos:
Como juntar dados de duas tabelas SQL?
Diferente do join que faz as ligações necessárias e monta a query o union executa duas ou mais queries distintas e retorna o resultado em sequencia.
Por exemplo, se no banco de dados existe duas tabelas uma para compra e outra para venda e quer ver os registro de movimento dos itens de cada tabela usa o union para fazer essa consulta buscando em uma e depois na outra.
Também é usada para determinar o menor preço de venda onde existe uma tabela de produto, outra de preço, outra de promoções com algumas diárias e outras mensais. Pode se fazer a consulta ligando os itens com essas tabelas separando ou tipos e depois juntando tudo com union para a comparação.
Veja também: Quais as restrições no uso de union?.
select * from tabela1 tb1 left join tabela2 tb2 on (tb1.id = tb2.id_tabela1) right join tabela2 tb2 on (tb1.id = tb2.id_tabela1) group by tb1.id
No mysql não existe esse comando predeterminado. Para isso simulo ele usando o left join e o right join, e agrupando.
O que seria:
select * from tabela1 tb1 full join tabela2 tb2 on (tb1.id = tb2.id_tabela1)
Fica:
select * from tabela1 tb1 left join tabela2 tb2 on (tb1.id = tb2.id_tabela1) right join tabela2 tb2 on (tb1.id = tb2.id_tabela1) group by tb1.id