Quando se inicia o estudo de banco de dados, uma dúvida muito comum é como realizar a interligação entre as tabelas, sendo que essa deve ser realizada através dos joins. É comum para quem está iniciando, ficar em dúvida em qual tipo de join deve ser utilizado na construção da query. Pensando nisso, irei apresentar abaixo um pequeno esquema baseado na teoria dos conjuntos que irá facilitar a compreensão dos principais tipos de joins, sendo eles: INNER JOIN, LEFT JOIN e RIGHT JOIN.
Para esse exemplo, vamos considerar que estamos trabalhando com duas tabelas, chamadas respectivamente de tabela_a e tabela_b e que a chave primária de cada tabela é a coluna id e que o relacionamento entre essas tabelas é um para muitos, isso é, um elemento da tabela_a pode estar associado a vários elementos da tabela_b, assim, a tabela_b apresenta uma chave estrangeira chamada tabela_a_id.
Diagrama Entidade-Relacionamento.
-
INNER JOIN
Utilizamos o INNER JOIN quando queremos buscar a interseção entre os elementos da tabela_a e tabela_b, isso é, somente serão listados os elementos que encontram-se associados em ambas as tabelas.
Somente a interseção será listada.
select * from tabela_a inner join tabela_b on (tabela_a.id = tabela_b.tabela_a_id);
-
LEFT JOIN
Utilizamos o LEFT JOIN quando queremos listar todos os elementos da tabela_a independente se está ou não associado à elementos da tabela_b.
Todos os elementos da tabela_a serão listados.
select * from tabela_a left join tabela_b on (tabela_a.id = tabela_b.tabela_a_id);
-
RIGHT JOIN
Utilizamos o RIGHT JOIN quando queremos listar todos os elementos da tabela_b independente se está ou não associado à elementos da tabela_a.
Todos os elementos da tabela_b serão listados.
select * from tabela_a right join tabela_b on (tabela_a.id = tabela_b.tabela_a_id);
Esse são três exemplos de joins que são frequentemente utilizados quando escrevemos alguma query. Espero que esse artigo tenha lhe auxiliado e qualquer dúvida ou sugestão entre em contato comigo nas redes sociais ou no menu "Contato" do site.
Grande abraço!!!