SQL – JOIN

Neste post, veremos como utilizar o JOIN para listar(recuperar) registros de duas ou mais tabelas de um banco de dados, se baseando no relacionamento entre certas colunas destas tabelas.
Os comandos aqui apresentados são SQL “padrão”, e servem para qualquer SGBD.

A palavra reservada JOIN é utilizada para listar(recuperar) registros de duas ou mais tabelas de um banco de dados.

Para utilizar o JOIN, as tabelas precisam ser relacionadas.

Em Bancos de Dados, as tabelas são relacionadas umas com as outras através de chaves primárias e estrangeiras.

Uma chave primária é uma coluna (ou combinação de colunas) com um valor único em cada linha. Cada valor de uma chave primária precisa ser único para toda a tabela. O propósito é buscar, de uma única vez, os dados de forma conjunta, que estão divididos entre várias tabelas.

Veja a tabela “pessoa”:

id sobrenome nome endereco cidade
1 Silva Luis Rua Lauro Florianopolis
2 Souza Pedro Rua Schmidt Rio de Janeiro
3 Santos João Rua Nono São Paulo
4 Alves Silvano Rua Margarida Salvador
5 Souza Jack Rua das Araras Florianopolis

A coluna ‘id’ é a chave primária da tabela ‘pessoa’. Isto significa que duas linhas NÃO podem ter o mesmo valor de id. O id distingue duas pessoas, mesmo que elas tenham o mesmo nome.

Agora, temos também a tabela de “compra”:

id_compra numero id_pessoa
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 5

A coluna ‘id_compra’ é a chave primária da tabela ‘compra’, e a coluna ‘id_pessoa’  se refere a tabela de pessoa, sem utilizar o nome da pessoa em si, mas sim o seu valor de id.

Perceba que o relacionamento entre as duas tabelas acima se faz através da coluna ‘id_pessoa’.

É através deste relacionamento que podemos “juntar” duas tabelas e buscar valores que estão em duas (ou mais) ao mesmo tempo, com apenas uma SQL.

Esta junção se faz através do INNER JOIN (ou simplesmente JOIN)

 

Sintaxe do INNER JOIN


SELECT coluna(s) FROM tabela1
INNER JOIN tabela2 ON tabela1.coluna=tabela2.column_name

 

Exemplo:

Para o nosso exemplo, então, queremos buscar o nome e o sobrenome de pessoas que possuem compra cadastrada, junto com o número da compra. Devemos então, utilizar a seguinte instrução:


SELECT pessoa.nome, pessoa.sobrenome, compra.numero
FROM pessoa INNER JOIN compra ON pessoa.id=compra.id_pessoa

ou


SELECT pessoa.nome, pessoa.sobrenome, compra.numero
FROM pessoa JOIN compra ON pessoa.id=compra.id_pessoa

Nota: A instrução JOIN (sem especificar seu tipo) é, implicitamente, um INNER JOIN.

O ResultSet da instrução acima será:

Nome Sobrenome Numero
João Santos 77895
João Santos 44678
Luis Silva 22456
Luis Silva 24562
Jack Souza 34764

A palavra reservada INNER JOIN (ou simplesmente JOIN) retorna linhas onde exista o valor do seu relacionamento (no caso, o id da pessoa) nas duas tabelas. Se existem linhas na tabela de pessoas que não tem registro na tabela de compra, estas linhas NÃO SERÃO LISTADAS.

Referências:

http://www.w3schools.com/sql/sql_join.asp

Deixe um Comentário

0 Comentários.

Deixe um Comentário


NOTA - Você pode usar estesHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>