Entendendo o JOIN do SQL (ou Junções)

Tips

Boa noite pessoal!

Navegando pela internet, me deparei com um ótimo guia visual sobre os JOINs. Como o próprio autor do guia visual disse “As coisas parecem fazer sentido com imagens. Eu olhei pela internet por uma boa representação gráfica dos SQL JOINs, mas não pude encontrar nada que me agradasse.” (tradução livre), concordo com o autor, pois muitos exemplos pela internet complicam mais do que explicam como funcionam os JOINs, mas o guia que ele desenvolveu ficou muito bom.

Alguns vão achar este tópico um pouco “básico” em comparação aos que tenho escrito, mas eu e muitas pessoas que indiquei o guia inglês acharam este guia muito interessante, e com este post estarei “traduzindo” o guia, esperando que seja de utilidade didática e até mesmo pessoal para vocês. Principalmente para que aprendamos como expressar melhor conceitos para nós são tão simples, mas que muitas vezes não sabemos explicar de uma forma adequada.

Irei abordadar neste post sete diferentes formas de retornar dados de duas tabelas relacionadas, mas além destes existem outros JOINS. Os JOINs demonstrados serão os seguintes:

  1. INNER JOIN
  2. LEFT JOIN
  3. RIGHT JOIN
  4. OUTER JOIN
  5. LEFT JOIN “excluindo” INNER JOIN
  6. RIGHT JOIN “excluindo” INNER JOIN
  7. OUTER JOIN “excluindo” INNER JOIN

Obs.: Os JOINs 5, 6 e 7 são na verdade variações dos anteriores, mas ainda podem ser considerados JOINs, devido aos seus comportamentos.

INNER JOIN

Este é simples, o mais entendível e o mais comum. Esta consulta retornará todos os registros da tabela esquerda (tabela A) que têm correspondência com a tabela direita (tabela B). Podemos escrever este JOIN da seguinte forma:

SELECT *
FROM A
INNER JOIN B
ON A.Key = B.Key

LEFT JOIN

Esta consulta retorna todos os registros da tabela esquerda (tabela A) e as correspondências que existirem com a tabela direita (tabela B). O código ficará da seguinte forma:

SELECT *
FROM A
LEFT JOIN B
ON A.Key = B.Key

RIGHT JOIN

Esta consulta retornará todos os registros da tabela direita (tabela B) e as correspondências que existirem com a tabela esquerda (tabela A). O código ficará da seguinte forma:

SELECT *
FROM A
RIGHT JOIN B
ON A.Key = B.Key

OUTER JOIN

Este JOIN também é conhecido como FULL OUTER JOIN ou FULL JOIN. Esta consulta retornará todos os registros das duas tabelas e juntando também os registros correspondentes entres as duas tabelas. O código ficará da seguinte forma:

SELECT *
FROM A
FULL OUTER JOIN B B
ON A.Key = B.Key

LEFT Excluding JOIN (LEFT ANTI SEMI JOIN)

Esta consulta retornará apenas os registros da tabela esquerda que não têm correspondência com a tabela direita. O código ficará da seguinte forma:

SELECT *
FROM A
LEFT JOIN B
ON A.Key = B.Key
WHERE B.Key IS NULL

RIGHT “excluindo” JOIN (RIGHT ANTI SEMI JOIN)

Esta consulta retornará todos os registros da tabela esquerda que não têm correspondência com a tabela direita. O código ficará da seguinte forma:

SELECT *
FROM A
RIGHT JOIN B
ON A.Key = B.Key
WHERE A.Key IS NULL

OUTER “excluindo” JOIN

Esta consulta retornará todos os registros das duas tabelas que não têm correspondência. O código ficará da seguinte forma:

SELECT *
FROM A
FULL OUTER JOIN B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

Para quem tiver interesse na figura completa com os JOINs demonstrados, segue abaixo o link:

O autor do artigo original se chama C.L. Moffatt, quem tiver interesse no artigo original e os exemplos que este autor utilizou, segue o link abaixo:

http://www.codeproject.com/KB/database/Visual_SQL_Joins.aspx

Please follow and like us:

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.