Os 4 JOINs do SQL, explicados sem diagrama de Venn
Todo mundo aprende JOIN com aqueles dois círculos que se cruzam. E todo mundo continua sem saber qual usar na hora do aperto.
O problema é que o diagrama mostra conjuntos, e o SQL trabalha com linhas. Trocando a pergunta, a coisa fica simples.
A única pergunta que importa
Você tem duas tabelas: pedidos e clientes. Nem todo pedido tem cliente cadastrado; nem todo cliente fez pedido.
A pergunta é: o que acontece com quem não tem par do outro lado?
Os quatro JOINs são as quatro respostas possíveis:
INNER JOIN— some. Só fica quem tem par dos dois lados.LEFT JOIN— fica tudo da esquerda. Quem não tem par vem comNULLnas colunas da direita.RIGHT JOIN— fica tudo da direita, mesma lógica invertida.FULL JOIN— não some ninguém. Os dois lados ficam, comNULLonde faltar par.
É isso. Não tem quinto caso.
Na prática
SELECT c.nome, p.valor
FROM clientes c
LEFT JOIN pedidos p ON p.id_cliente = c.id
Esse LEFT JOIN responde “todos os clientes, com o que compraram — inclusive quem não comprou nada”. Troque para INNER e os clientes sem compra desaparecem da resposta.
Repara que a escolha do JOIN não é técnica, é de negócio. “Quantos clientes temos?” e “quantos clientes compraram?” são perguntas diferentes, e o JOIN é o que separa uma da outra.
O RIGHT JOIN quase não aparece — e tem motivo
RIGHT JOIN faz exatamente o que o LEFT faz, só que espelhado. Como você escolhe a ordem das tabelas no FROM, dá pra escrever qualquer RIGHT como um LEFT invertendo os lados.
Não está errado usar. Só é menos comum porque a maioria das pessoas lê a query de cima para baixo e pensa “esta é a tabela principal, aquilo ali é complemento” — que é o desenho natural do LEFT.
Pra lembrar
Antes de escrever o JOIN, responda em voz alta: quem eu não posso perder?
- Não posso perder ninguém da esquerda →
LEFT - Só quero quem tem os dois lados →
INNER - Não posso perder ninguém, ponto →
FULL
A resposta a essa frase é o JOIN. O diagrama de Venn era só um desenho.