SQL Join: Como e quando usar INNER JOIN, LEFT JOIN ou RIGHT JOIN

Uma artigo rápido para ajudar a entender como funciona cada tipo dessas pesquisas. Sempre que estamos começando com banco de dados, a dúvida de qual momento e como usar os JOIN no SQL surgem. OK, pra quem já está a tempos no desenvolvimento, a dúvida sempre fica.

O uso dos JOIN é essencial para conectar os dados entre as tabelas no banco de dados. Para nosso exemplo, por ser um portal focado em PHP, vamos considerar o exemplo em cima do melhor amigo que é o MySQL.

A modelagem

Para nosso exemplo, vamos considerar uma modelagem simples, imaginando um sistema de blogs onde existem artigos e categorias. O que vamos querer retornar nas consultas é os artigos que tem categorias, os arquivos com ou sem categoria, quais categorias tem artigos e ainda artigos sem categoria.

Sempre considerando que cada artigo pode ter apenas uma categoria associada.Exemplo de ER

 

Quando usar o INNER JOIN

Vamos listar todos os artigos e suas respectivas categorias. Caso um artigo não tenha categoria relacionada, não será exibido no resultado dessa pesquisa. Para isso, a query abaixo será executada.

SELECT artigos.id, artigos.titulo, categorias.titulo FROM artigos INNER JOIN categorias ON artigos.categoria_id = categorias.id

Quando usar o LEFT JOIN

Agora, vamos listar todos os artigos, mesmo que não tenham uma categoria associada na coluna.

SELECT artigos.id, artigos.titulo, categorias.titulo FROM artigos LEFT JOIN categorias ON artigos.categoria_id = categorias.id

Nesse caso, a coluna “categorias.titulo” irá retornar o valor NULL, mostrando os artigos que não tem uma categoria definida.

Quando usar o RIGHT JOIN

No caso do RIGHT JOIN, irá retornar primeiro verificar todas as categorias que tem artigos. Com isso, você irá perceber uma mudança no resultado, pois eles virão ordenados pelas categorias, caso não tenha definido nenhuma ordenação especial.

SELECT artigos.id, artigos.titulo, categorias.titulo FROM artigos RIGHT JOIN categorias ON artigos.categoria_id = categorias.id

Obrigado e até a próxima, qualquer dúvida deixe um comentário!

Seu comentário é muito importante! Conte pra gente o que você achou desse conteúdo.