sábado, 29 de novembro de 2014

Entender a associação entre tabelas, junções ou os famosos joins, é parte fundamental no aprendizado do SQL. Essas operações se originam no conceito de modelo de dados relacional, onde diversas tabelas podem estar relacionadas entre si e, por conterem informações associadas entre si, precisam ser consultadas integrando todas as informações desejadas.

Existem 4 joins fundamentais:
  1. INNER JOIN
  2. LEFT JOIN
  3. RIGHT JOIN
  4. OUTER JOIN
Vamos utilizar as tabelas ORDERS e CUSTOMERS para exemplificar cada uma destas operações.



O INNER Join


Sendo o mais comum dos quatro, o inner join retorna todos os registros que estão presentes ao mesmo tempo em duas tabelas. Abaixo segue a representação gráfica desta operação.



No SQL, vamos retornar os nomes dos clientes presentes na tabela CUSTOMERS que estão na tabela ORDERS e suas respectivas datas de compra.

-- INNER JOIN
SELECT A.CustomerName, B.OrderDate
FROM CUSTOMERS A
INNER JOIN ORDERS B
ON A.CustomerID = B.CustomerID

Nosso resultado é o cliente Ana Trujillo, a única cliente que está presente ao mesmo tempo nas duas tabelas, relacionada pelo seu CustomerID.


O LEFT Join

Esta consulta retorna todos os registros da tabela da esquerda (no nosso caso é a tabela CUSTOMERS), considerando todos os registros com a qual está relacionada na tabela da direita (ORDERS). Graficamente é representada por:


Na prática temos:

--LEFT JOIN
SELECT A.CustomerName, B.OrderDate
FROM CUSTOMERS A
LEFT JOIN ORDERS B
ON A.CustomerID = B.CustomerID

Que nos retorna


Note que o único registro presente nas duas tabelas é o da segunda linha, que retornou em nosso exemplo do INNER JOIN. Como os demais não possuem correspondência na tabela ORDERS, a informação sobre a data da compra retorna como NULL.

O RIGHT Join

Podemos pensar no RIGHT JOIN como uma operação oposta a do LEFT JOIN. Esta consulta nos retornará todos os registros presentes na tabela da direita (ORDERS), e sua informação corresponde na tabela da esquerda (CUSTOMERS, se houver). Graficamente,


No SQL,

-- RIGHT JOIN
SELECT A.CustomerName, B.OrderDate
FROM CUSTOMERS A
RIGHT JOIN ORDERS B
ON A.CustomerID = B.CustomerID

tendo como resultado



O OUTER Join ou FULL Join

O OUTER JOIN, também conhecido como FULL Join retorna todos os registros presentes nas duas tabelas, sendo que a informação de uma que não conter correspondência na segunda retorna com NULL. Graficamente,


No código, temos

-- OUTER JOIN
SELECT A.CustomerName, B.OrderDate
FROM CUSTOMERS A
FULL OUTER JOIN ORDERS B
ON A.CustomerID = B.CustomerID

e seu resultado



As tabelas utilizadas neste post estão disponíveis no site http://www.w3schools.com/

Um abraço e até o próximo post!


0 comentários:

Postar um comentário