Entendendo a diferença entre INNER JOIN e OUTER JOIN
Entendendo a diferença entre INNER JOIN e OUTER JOIN
Se você já precisou cruzar dados entre duas tabelas no banco de dados, certamente se deparou com os JOINs. Mas você sabe a diferença entre INNER JOIN
e OUTER JOIN
? Neste post, vamos explicar de forma simples e prática!
O que é um JOIN?
JOIN é uma operação que combina registros de duas ou mais tabelas com base em uma condição relacionada, normalmente usando chaves primárias e estrangeiras.
INNER JOIN
O INNER JOIN retorna apenas as linhas que possuem correspondência em ambas as tabelas.
Exemplo:
SELECT clientes.nome, pedidos.numero
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;
Explicação: Vai trazer somente os clientes que possuem pedidos cadastrados.
OUTER JOIN
O OUTER JOIN retorna todas as linhas de uma tabela, mesmo que não haja correspondência na outra. Existem três tipos:
- LEFT OUTER JOIN: todos os registros da tabela da esquerda + correspondências da direita.
- RIGHT OUTER JOIN: todos da direita + correspondências da esquerda.
- FULL OUTER JOIN: todos os registros de ambas as tabelas.
Exemplo com LEFT OUTER JOIN:
SELECT clientes.nome, pedidos.numero
FROM clientes
LEFT OUTER JOIN pedidos ON clientes.id = pedidos.cliente_id;
Explicação: Vai trazer todos os clientes, mesmo que não tenham feito pedidos. Quando não houver pedido, o campo "numero" será nulo.
Resumo rápido
JOIN | O que retorna? |
---|---|
INNER JOIN | Apenas registros com correspondência em ambas as tabelas. |
LEFT OUTER JOIN | Todos da tabela da esquerda + correspondências da direita. |
RIGHT OUTER JOIN | Todos da tabela da direita + correspondências da esquerda. |
FULL OUTER JOIN | Todos os registros de ambas as tabelas. |
Conclusão
Agora que você entende a diferença entre INNER JOIN e OUTER JOIN, suas consultas SQL vão ficar muito mais poderosas! Use o INNER JOIN quando quiser apenas os registros relacionados, e o OUTER JOIN quando quiser visualizar todos os dados, mesmo que não tenham correspondências.