Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
post favorito     comentários

Explorando os Tipos de Join – Parte I

Veja neste artigo quatro tipos de Join: inner join, left join, right join e full outer join.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

Olá !

Join é a ferramenta básica de trabalho nos bancos de dados relacionais. É através dos diferentes tipos de join que conseguimos recuperar dados de uma ou mais tabelas com o auxílio dos relacionamentos existentes.

Nessa matéria discutiremos os 4 modêlos de join (inner join, left join, right join e full outer join);  aprenderemos também como escolher o tipo certo de join para cada situação.

Para os exemplos a seguir serão consideradas duas tabelas : produto e venda. A tabela venda - como o prórpio nome sugere - irá registrar vendas de itens cadastrados na tabela produto, mas pela característica do negócio também serão permitidas vendas de produtos sem cadastro.

O script abaixo irá criar e popular as tabelas venda e produto:

/* criação da tabela produto */
create table produto
(
cod_produto int primary key,
descr_produto varchar (20)
)

/* criação da tabela venda.*/

create table venda
(
id_venda int identity primary key,
cod_produto int ,
qtde int,
vlr_unit dec(9,2)
)

/* populando a tabela produto */

insert into produto values (101001,'Livro-1')
insert into produto values (101002,'Livro-2')
insert into produto values (101003,'Livro-3')
insert into produto values (101004,'Livro-4')
insert into produto values (101005,'Livro-5')

/* populando a tabela venda */

insert into venda (cod_produto,qtde,vlr_unit)  values (101001,2,14.00)
insert into venda (cod_produto,qtde,vlr_unit)  values
(101002,1,20.50)
insert into venda (cod_produto,qtde,vlr_unit)  values
(101003,4,12.00)
insert into venda (cod_produto,qtde,vlr_unit)  values (101030,6,
8.00)
insert into venda (cod_produto,qtde,vlr_unit)  values
(101031,1,44.00)

O relacionamento entre as tabelas produto e venda pode ser visualizado na figura-1.

Figura-1: Relacionamento entre as tabelas produto e venda

07-07pic01.JPG 

cadastrados

(tab.produto)

vendidos

(tab.venda)

vendidos sem cadastro

cadastrados e não vendidos

vermelho + verde

verde + azul

azul

vermelho

10101

10101

10102

10102

10103

10103

10104

10104

10105

10105

 

10130

10130

10131

10131

Observemos o seguinte:

A área em vermelho representa os produtos que foram cadastrados mas não foram vendidos.Para resgatar esses produtos devemos utilizar um left join , ligando um filtro para listar SOMENTE as linhas EXISTENTES na tabela produto SEM CORRESPONDÊNCIA na tabela venda ;

A área em azul representa produtos que foram vendidos e não possuem cadastro. Para resgatar esses produtos deveremos utilizar um right join ligando um filtro para listar SOMENTE as linhas EXISTENTES na tabela venda SEM CORRESPONDÊNCIA na tabela produto ;

A área em verde representa a intersecção dos dois conjuntos, isto é, produtos que foram vendidos e possuem cadastro. Para selecionar as linhas que possuem equivalência nas duas tabelas utilizamos o inner join ;

Para representar a união de todos os produtos com todas as vendas, independentemente de relacionamento (áreas em vermelho+verde+azul) utilizamos um full outer join.

Agora que conhecemos toda a teoria sobre os modêlos de join, seria interessante alguns exemplos práticos, não é mesmo ? Então não perca a continuação dessa matéria.

Um grande abraço a todos!

 



Paulo Ribeiro (psribeiro@hotmail.com) é Microsoft MCDBA e membro da equipe editorial da SQL Magazine. Atua como DBA sênior em SQL Server na Livraria e Papelaria Saraiva S/A.

O que você achou deste post?
Conhece a assinatura MVP?
Publicidade
Serviços

Mais posts