TOP

Lição SQL 10. Unindo tabelas (INNER JOIN)

O recurso mais poderoso da linguagem SQL é a capacidade de combinar diferentes tabelas na RAM do SGBD durante a execução da consulta. As junções são frequentemente usadas para análise de dados. Via de regra, os dados ficam em tabelas diferentes, o que permite armazená-los de forma mais eficiente (já que a informação não é duplicada), simplifica o processamento dos dados e permite escalar o banco de dados (é possível adicionar novas tabelas com informações adicionais) .

As tabelas de banco de dados utilizadas no SGBD MS Access são tabelas relacionais, ou seja, todas as tabelas podem ser conectadas entre si por campos comuns.


1. Criando uma combinação de tabelas (JOINS)

Combinar tabelas é um procedimento muito simples. É necessário especificar todas as tabelas que farão parte da combinação e “explicar” ao SGBD como elas se relacionarão entre si. A conexão é feita utilizando a palavra WHERE, por exemplo:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers, Sumproduct 
WHERE Sellers.City = Sumproduct.City

Combinando as duas tabelas, conseguimos ver quais produtos cada vendedor vende. Vamos dar uma olhada no código da solicitação, pois ele é um pouco diferente de uma solicitação normal. A instrução SELECT começa especificando as colunas que queremos exibir, mas esses campos estão em tabelas diferentes, a cláusula FROM contém duas tabelas que queremos unir na instrução SELECT, as tabelas são unidas usando a palavra WHERE, que especifica as colunas juntar-se. Você deve especificar o nome completo do campo (Tabela.Campo), pois o campo City está em ambas as tabelas.

2. Combinação interna (INNER JOIN)

No exemplo anterior, utilizamos a palavra WHERE para combinar tabelas, que realiza uma verificação baseada na equivalência de duas tabelas. Uma combinação deste tipo também é chamada de "combinação interna". Existe também outra forma de combinar tabelas que indica claramente o tipo de combinação. Considere o seguinte exemplo:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers 
INNER JOIN Sumproduct 
ON Sellers.City = Sumproduct.City

Nesta consulta, em vez de WHERE, utilizamos a construção INNER JOIN ... ON ..., que deu um resultado semelhante. Embora a combinação com a cláusula WHERE seja mais curta, ainda é melhor usar INNER JOIN porque é mais flexível, como será explicado com mais detalhes nas seções a seguir.