O comando JOIN do SQL tem a função básica de agregar tabelas mediante um campo que faça sentido às mesmas.

Por exemplo, considerando o diagrama hipotético abaixo, caso eu queira como retorno todas as compras de um cliente, poderia retornar algo como:

SELECT * FROM cliente JOIN compra ON idcliente

Mas e se eu quero retornar somente os clientes que estão ligados a uma compra? Ou compras que não estão ligadas a nenhum cliente cadastrado?

Para esses tipos de consultas mais complexas existem uma série de complementos para o JOIN, dos quais os mais utilizados são INNER JOIN e LEFT JOIN, que permitem filtrar os resultados da junção entre tabelas. Esses “complementos” estão explicados a seguir.


INNER JOIN Exemplo

SELECT * FROM cliente INNER JOIN compra ON idcliente

Utilizando o INNER JOIN você terá como resultado de sua consulta somente os pares de cliente/compra, ou seja, os casos em que uma compra não está ligada a nenhum cliente, ou cliente que não possuem compras, não serão apresentados no resultado.


LEFT JOIN Exemplo

O LEFT JOIN traz todos os resultados da tabela mais à esquerda e o agrega ao seu valor correspondente das outras tabelas, caso existam. Ou seja, nesse caso a consulta retornaria todos os clientes e suas compras, caso existam. Caso não existam compras para essa cliente os campos relativos à tabela de compras ficariam em branco.


RIGHT JOIN Exemplo

SELECT * FROM cliente RIGHT JOIN compra ON idcliente

De forma análoga ao LEFT JOIN, o RIGHT JOIN traz todos os resultados da tabela mais à direita e o agrega ao seu valor correspondente das outras tabelas, caso existam. Ou seja, nesse caso a consulta retornaria todas as compras e, caso existam, seus clientes. Caso não existam clientes para essa compra os campos relativos à tabela de clientes ficariam em branco.


OUTER JOIN  Exemplo

SELECT * FROM cliente OUTER JOIN compra ON idcliente

O comando OUTER JOIN, mesmo não sendo muito conhecido, pode ser bastante útil em alguns casos. Ele traria como resultado todos os clientes que não estão ligados à nenhuma compra.


BONUS 01: Descomplicando SQL Joins

Uma imagem vale mais do que mil palavras:

comando join sql

Bonus 2: Script de Banco de Dados SQL pronto

Um post com exemplos de consulta e criação de tabelas em SQL + Script de Banco de Dados SQL pronto.

// Comente!

comentários