Sunteți pe pagina 1din 6

Definio:

Para extrair informaes de uma Base de Dados, na maioria dos casos


necessrio reunir dados que esto dispostos em diversas tabelas. As tabelas do
banco se interligam atravs de chaves, a chave primria e a chave estrangeira.
A chave primria geralmente se encontra na tabela que armazena na base
valores de origem como as tabelas CIENTE, PRODUTO e VENDEDOR do nosso
exemplo. J a chave estrangeira estar em outras tabelas referenciando a chave
primria da tabela origem como as tabelas ITEM_PRODUTO e PEDIDO.
A tcnica de Join(juno) entre tabelas consiste em unir esses dados
que esto dispostos em diversas tabelas de forma que se consiga extrair as
informaes desejadas atravs de batimentos(geralmente pelas chaves
primria/estrangeira). Os principais tipos de Joins entre tabelas so: Inner Join,
Left Join, Right Join e o Full Outer Join.

1. Inner Join:

PED

CLI

Figura 1 Representao do Inner Join em Diagrama de Venn

Em um Inner Join entre duas tabelas, onde a tabela principal a tabela


PED (PEDIDO) e a tabela secundria a CLI (CLIENTE), o result set da query
dever retornar apenas os valores que existem igualmente nas duas tabelas, de
acordo com o batimento (comparao) das chaves primria (tabela - PED) e
secundria (tabela - CLI).
Figura 1 Abstraindo as tabelas como conjuntos, podemos afirmar que o Inner Join trar apenas
os dados que esto em PED e CLI ao mesmo tempo (interseco)

Exemplificando na prtica o Inner Join:

1.1 Exibindo os dados da tabela principal Cliente:


Query: SELECT * FROM LOJA.CLIENTE;
COD_CLI

NOME_CLI

ENDERECO

CIDADE

CEP

UF

Ana Luiza

rua3

Caruaru

25155454

pe

Maria Fernanda

rua34

Recife

26555648

pe

Carla Daniela

rua56

Olinda

62544587

pe

Patricia Arago

rua45

Joo Pessoa

54155545

pe

Marcelo Fernando

rua21

Olinda

26554584

pe

Matheus Henrique

rua56

Joo Pessoa

21255548

pe

Luan Santana

rua17

Olinda

41541555

Pe

Maria de Fatima

rua8

Caruaru

21254587

Pe

Leila Maria

rua34

Olinda

52145789

Pe

10

Keli Crystina

rua3

Caruaru

36598745

Pe

Tabela 1 Result set da tabela de Cliente.

1.2 Exibindo os dados da tabela Pedido.


Query: SELECT * FROM LOJA.PEDIDO;
NUM_PED

PRAZO_ENTR

CD_CLI

CD_VEND

DATA_PEDIDO

365

444

2015-07-22

366

10

666

2015-07-22

Tabela 2 Result set da tabela de Pedido.

1.3 Executando o Inner Join


Executando o Inner Join, apenas os dados que existem em comum na
tabela devero ser retornados.
Query: SELECT
PED.NUM_PED Nmero_Pedido,
CLI.NOME_CLI Nome_Cliente
FROM LOJA.PEDIDO PED
INNER JOIN LOJA.CLIENTE CLI
ON PED.CD_CLI = CLI.COD_CLI;

Legenda:
LOJA.PEDIDO PED: Tabela principal do Join.
JOIN LOJA.CLIENTE CLI: Tabela Secudria
ON PED.CD_CLI = CLI.COD_CLI: Chaves que ligam
as duas tabelas. Sempre devero ser comparadas pois
assim garantir que s sero retornados os valores da
interseco(podem ser adicionados mais filtros,
dependendo da necessidade).

NMERO_PEDIDO

NOME_CLIENTE

365

Carla Daniela

366

Keli Crystina
Tabela 3 Result set do Inner Join entre as tabelas Pedido e Cliente.

2. Left Join:

PROD

IPED

Figura 1 Representao do Left Join em Diagrama de Venn

Em um Left Join de duas tabelas, onde a tabela principal a tabela PROD


(PRODUTO) e a tabela secundria a IPED (ITEM_PEDIDO), o result set
(resultado) da query dever retornar TODOS os valores da tabela principal
(PROD) e os valores que existem igualmente nas duas tabelas (Interseco), de

acordo com o batimento (comparao) das chaves primria (tabela principal prod) e secundria (tabela - iped).

2.1 Exibindo os dados da tabela principal Item Pedido:


Query: SELECT * FROM LOJA.ITEM_PEDIDO;
NO_PED

CD_PROD

QTD_PED

365

15

5.0

365

12

30.0

365

13

10.0

365

11

1.0

365

14

5.0

366

11

30.0

366

15

12.0

366

14

100.0

Tabela 1 Result set da tabela Item Pedido.

2.2 Exibindo os dados da tabela principal Produto:


Query: SELECT * FROM LOJA.PRODUTO;
COD_PROD

UNID_PROD

DESC_PROD

VAL_UNIT

11

KG

Chapa de Ao

3.50

12

KG

Cimento

49.80

13

KG

Parafuso

12.00

14

KG

Fio de Cobre

6.90

15

GALAO

Solvente

3.99

16

UNI

Telha

5.99

17

UNI

Tijolo

2.99

Tabela 2 Result set da tabela Produto.

2.3 Executando o Left Join


SELECT *
FROM LOJA.PRODUTO PROD
LEFT JOIN LOJA.ITEM_PEDIDO IPED
ON IPED.CD_PROD = PROD.COD_PROD;

Legenda:
LOJA.PRODUTO PROD: Tabela principal
do Join.
LOJA.ITEM_PEDIDO IPED: Tabela
Secudria
ON IPED.CD_PROD = PROD.COD_PROD:
Chaves que ligam as duas tabelas. Sempre
devero ser comparadas pois assim
garantir que s sero retornados os
valores da tabela principal e valores da
interseco (podem ser adicionados mais
filtros, dependendo da necessidade).

COD_PROD

UNID_PROD

DESC_PROD

VAL_UNIT

NO_PED

CD_PROD

QTD_PED

11

KG

Chapa de Ao

3.50

365

11

1.0

11

KG

Chapa de Ao

3.50

366

11

30.0

12

KG

Cimento

49.80

365

12

30.0

13

KG

Parafuso

12.00

365

13

10.0

14

KG

Fio de Cobre

6.90

365

14

5.0

14

KG

Fio de Cobre

6.90

366

14

100.0

15

GALAO

Solvente

3.99

365

15

5.0

15

GALAO

Solvente

3.99

366

15

12.0

16

UNI

Telha

5.99

null

null

null

17

UNI

Tijolo

2.99

null

null

null

Tabela 3 Result set do Left Join entre as tabelas Item Pedido e Produto.

3. Right Join:

PED

VEND

Figura 1 Representao do Right Join em Diagrama de Venn

Em um Right Join de duas tabelas, onde a tabela principal a tabela


PED (PEDIDO) e a tabela secundria a VENDEDOR (VENDEDOR), o result
set (resultado) da query dever retornar TODOS os valores da tabela
secundria (VEND) e os valores que existem igualmente nas duas tabelas
(Interseco), de acordo com o batimento (comparao) das chaves primria
(tabela principal - PED) e secundria (tabela - IPED).

3.1 Exibindo os dados da tabela principal Pedido:


Query: SELECT * FROM LOJA.PEDIDO;
NUM_PED PRAZO_ENTR CD_CLI CD_VEND DATA_PEDIDO
365

444

2015-07-22

366

10

666

2015-07-22

Tabela 1 Result set da tabela Pedido.

3.2 Exibindo os dados da tabela secundria Vendedor:


Query: SELECT * FROM LOJA.VENDEDOR;
COD_VEND NOME_VEND SAL_FIXO FAIXA_COMIS
444

Jair

1000.00

555

Lucas

1250.00

666

Marcone

1250.00

Tabela 2 Result set da tabela Vendedor.

3.3 Executando o Right Join

SELECT *
FROM LOJA.PEDIDO PED
RIGHT JOIN LOJA.VENDEDOR VEND
ON PED.CD_VEND = VEND.COD_VEND;

Legenda:
LOJA.PEDIDO PED: Tabela principal do
Join.
LOJA.VENDEDOR VEND: Tabela
Secudria

ON PED.CD_VEND = VEND.COD_VEND:
Chaves que ligam as duas tabelas. Sempre
devero ser comparadas pois assim
garantir que s sero retornados os
valores da tabela secundria e valores da
interseco (podem ser adicionados mais
filtros, dependendo da necessidade).

COD_VEN NOME_VEN SAL_FIX


D
D
O

FAIXA_COMI NUM_PE
S
D

PRAZO_ENT CD_CL CD_VEN


R
I
D

DATA_PEDID
O

444

Jair

1000.00

365

444

2015-07-22

555

Lucas

1250.00

null

null

null

null

null

666

Marcone

1250.00 b
366
5
10
666
Tabela 3 Result set do Right Join entre as tabelas Pedido e Vendedor.

2015-07-22

4. Full Outer Join:


Em um Full Outer Join de duas tabelas, onde a tabela principal a
tabela PED (PEDIDO) e a tabela secundria a VENDEDOR (VENDEDOR), o
result set (resultado) da query dever retornar TODOS os valores da tabela
secundria (VEND) e os valores que existem igualmente nas duas tabelas
(Interseco), de acordo com o batimento (comparao) das chaves primria
(tabela principal - PED) e secundria (tabela - IPED).

PED

Query: (SELECT *
FROM LOJA.PRODUTO PROD
LEFT JOIN LOJA.ITEM_PEDIDO IPED
ON IPED.CD_PROD = PROD.COD_PROD)
UNION
(SELECT *
FROM LOJA.ITEM_PEDIDO IPED
RIGHT JOIN LOJA.PRODUTO PROD
ON IPED.CD_PROD = PROD.COD_PROD)

VEND

Legenda:
LOJA.PEDIDO PED: Tabela principal do Left
Join.
LOJA.ITEM_PEDIDO IPED: Tabela principal
do Right Join.
JOIN LOJA.CLIENTE CLI: Tabela Secudria
WHERE PED.CD_CLI = CLI.COD_CLI:
Chaves que ligam as duas tabelas. Sempre
devero ser comparadas pois assim garantir
que s sero retornados os valores da
interseco(podem ser adicionados mais
filtros, dependendo da necessidade).

Outras formas de Join:


- No Join abaixo executado um Inner Join implcito.
Query: SELECT
PED.NUM_PED Nmero_Pedido,
CLI.NOME_CLI Nome_Cliente
FROM LOJA.PEDIDO PED,
LOJA.CLIENTE CLI
WHERE
PED.CD_CLI = CLI.COD_CLI;

Glossrio:
Result Set
Chave Primria
Cahave Estrangeira

Legenda:
LOJA.PEDIDO PED: Tabela principal do Join.
JOIN LOJA.CLIENTE CLI: Tabela Secudria
WHERE PED.CD_CLI = CLI.COD_CLI: Chaves que
ligam as duas tabelas. Sempre devero ser
comparadas pois assim garantir que s sero
retornados os valores da interseco(podem ser
adicionados mais filtros, dependendo da necessidade).

S-ar putea să vă placă și