Introdução ao SQL - Pesquisa em Multiplas Tabelas

Veja nesta quick como manipular várias tabelas direto no SQL.

Até agora vimos como realizar pesquisas em uma única tabela. Contudo, na montagem do nosso modelo de dados sempre temos diversas tabelas. Logo é necessário sabermos como vincular a informação dessas tabelas de forma a mostrar a informação de maneira correta. A isto é dado o nome de união de tabelas (join).

Como visto anteriormente, a união entre as entidades do nosso modelo lógico se dá por meio de chaves primárias e estrangeiras. Essas chaves são, na representação física do modelo, as colunas que as tabelas têm em comum. No decorrer apresentarei as diversas formas de unir colunas e como implementá-las em SQL.

União de tabelas

Para realizar a união de tabelas, basta acrescentarmos após a cláusula FROM do comando SELECT as tabelas que queremos unir. Devemos colocar na cláusula WHEREa condição de união das tabelas, ou seja, as respectivas chaves primária e estrangeira. Sintaxe:

SELECT Tabela1.coluna1, Tabela1.coluna2, Tabela2.coluna1, Tabela2.coluna2 FROM Tabela1, Tabela2 WHERE Tabela1.chave_primaria = Tabela2.chave_estrangeira
Código 1. Estrutura SELECT

Note que é opcional colocar a identificação da tabela antes do nome das colunas na lista de campo do comando SELECT. Contudo, essa é uma prática recomendada para facilitar o entendimento do comando.

Essa regra só não é válida quando estivermos querendo mostrar uma coluna que tenha o mesmo nome em ambas as tabelas – normalmente o que acontece com as chaves primária e estrangeira. Nesse caso é necessário indicar de qual tabela se quer a informação – ainda que, de fato, o dado seja igual nas duas tabelas. Considere que na maior parte dos bancos de dados, informar em qual tabela está a coluna facilita o trabalho do banco de dados. Essa prática leva a maior agilidade na recuperação da informação.

União regular

Denomina-se união regular as uniões que têm a cláusula WHERE unindo a chave primária à estrangeira das tabelas afetadas pelo comando SELECT. Exemplo:

SELECT PEDIDO.CODIGO, PEDIDO.CODCLIENTE, PEDIDO.DATA, CLIENTES.NOME FROM PEDIDO,CLIENTES WHERE PEDIDO.CODCLIENTE = CLIENTES.CODCLIENTE;
Código 2. Estrutura SELECT

Desta maneira o SELECT trará todos os registros em que o código do cliente seja igual ao código do pedido, o interessante aqui, é que ele traz também o nome do cliente na tabela Pedido, sabendo é claro que não há este campo na tabela pedido.

Podemos também fazer a união utilizando JOIN, veja como ficaria no exemplo a seguir:

SELECT PEDIDO.CODIGO, PEDIDO.CODCLIENTE, PEDIDO.DATA, CLIENTES.NOME FROM PEDIDO JOIN CLIENTES ON PEDIDO.CODCLIENTE = CLIENTES.CODCLIENTE;
Código 3. Estrutura SELECT - JOIN

Para evitar que o comando fique extremamente extenso, é possível atribuir apelidos às tabelas utilizadas no comando SELECT. Devemos fazer isso, colocando o apelido após o nome da tabela na cláusula FROM. Dessa forma, o seguinte comando teria o mesmo efeito do comando anterior:

SELECT a.CODIGOCLIENTE, a.CODVENDA, b.NOMECLIENTE FROM PEDIDO a, CLIENTE b WHERE a.CODIGOCLIENTE = b.CODIGOCLIENTE;
Código 4. Estrutura SELECT - Alias

União de mais de duas tabelas

Frequentemente é necessário unir mais de duas tabelas para fornecer uma informação relevante do banco de dados. No Nosso caso, suponha que se queira saber o quais foram os produtos comprados por um determinado cliente, na tabela de itens do pedido não há o código do cliente, a regra é: na tabela de pedido tem o codigo de cliente e na tabela de itens tem o codigo da venda, veja como fica essa instrução:

SELECT a.CODVENDA, a.CODCLIENTE, b.CODCLIENTE, b.NOMECLIENTE, c.CODVENDA, c.PRODUTO FROM PEDIDO a, CLIENTES b, ITENS c WHERE a.CODCLIENTE = b.CODCLIENTE AND a.CODVENDA = c.CODVENDA;
Código 5. Estrutura SELECT - Alias

Conclusão:

Como podemos ver neste artigo, a união de tabela é algo bastante usado nas instruções SQls, ela é bastante usada quando precisamos fazer Views, Stored Procedures e até triggers, no próximo artigo estarei falando de Funções de agrupamento, até lá.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados