15
set
09

Trabalhando com JOIN (ou Junções)

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

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

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

About these ads

14 Respostas para “Trabalhando com JOIN (ou Junções)”


  1. 1 Nedio Dorns
    15/10/2009 às 11:34

    Melhor conteúdo sobre joins na internet, sabendo isso, pode-se montar qualquer query!

    parabéns

    • 15/10/2009 às 16:18

      Nedio, mesmo que não seja só de JOINs que se faz uma query, o artigo do C.L. Moffatt ficou bem claro e objetivo.

      Obrigado pelo comentário! Qualquer dúvida pode me contatar que estarei disposto a esclarecer.

  2. 3 Julio
    24/03/2010 às 11:51

    Somente elogios…
    Estou há um tempinho sem usar sql e esse artigo caiu como uma luva. Imagens com explicação rápida, um casamento perfeito. Parabéns.

  3. 4 Roger Doger
    25/05/2010 às 15:17

    Sem comentários!

    Muito bom.

  4. 5 Giancarlo Gonçalves
    19/07/2010 às 23:35

    Muito bom o post
    Tem muita gente que se perde com os Joins por nao saber usa-los, deixou de uma forma clara, com as imagens nao tem erro.

  5. 19/07/2010 às 23:44

    Obrigado pelos comentários!!!

  6. 7 Flávia Santi
    27/09/2010 às 22:43

    Só para não dizer que não entro no seu blog… entrei…
    Muito bom!
    Parabéns!

  7. 8 Roberto Ferreira
    15/12/2011 às 15:11

    Nossa! Então era isso? kkkk
    Sem dúvidas! Não poderia ser explicado melhor!

  8. 9 Mauricio
    24/02/2012 às 13:17

    Excelente explicação.

    Existem pessoas que sabem transformar um assunto dificil em uma coisa muito simples.

  9. 10 Carlos farias
    04/09/2012 às 11:59

    Muito bom seu artigo, estava a dias quebrando kbç.mais com essa explicaçao clara e objetiva consegui resolver meu problama com o INNER JOIN.
    é q sou novato em programaçao e me indentifiquei mais com PHP.
    Valeu, Obrigado.

  10. 30/01/2013 às 15:05

    Muito interessante… pra mim que estou apanhando caiu como luvas!


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

Você está comentando usando sua conta WordPress.com. Sair / Mudar )

Imagem do Twitter

Você está comentando usando sua conta Twitter. Sair / Mudar )

Foto do Facebook

Você está comentando usando sua conta Facebook. Sair / Mudar )

Conectando a %s


Sobre o blog

Blog que há três anos trata de SQL Server, .NET Framework, PowerShell, soluções para problemas comuns e não tão comuns assim, informações sobre ferramentas diversas e o que vier na cabeça do MCT Paulo R. Pereira.

Twitter


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 345 outros seguidores

%d bloggers like this: