Buscar

ApostilaInner_20130917232704

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Helder O. Silveira
Banco de Dados II
Para a prática desta aula utilizaremos o banco de dados Firebird e o administrador 
FlameRobin.
INNER JOIN, LEFT JOIN E RIGHT JOIN
Para começar vamos criar as seguintes tabelas e inserir os valores conforme abaixo:
– Tabelas 
FILIAL
FIL_CODIGO FIL_NOME
1 MATRIZ
2 FILIAL 1
3 FILIAL 2
FUNCIONARIOS
FUN_CODIGO FIL_CODIGO FUN_NOME
1 1 JOÃO
2 2 JOAQUIM
3 2 JOSÉ
4 3 MÁRCIO
5 null PEDRO
Entendendo LEFT, RIGHT e INNER
Quando dizemos que a tabela será Left ou Right, estamos informando ao comando 
SQL que ele deve obedecer o sentido para a Direita ou para a Esquerda, ou seja, ao 
utilizarmos Left Join o banco de dados irá analisar a estrutura da tabela da Direita e 
comparar com a tabela da Esquerda (leia-se Direita para a Esquerda), veja o desenho.
Left e Right Join
Left Join
Na primeira situação temos o Left Join, a seta está apontando para a tabela 
FUNCIONARIOS simbolizando que a precedência é da tabela da Esquerda, então 
podemos dizer que no select abaixo, serão listados todos os Funcionários, mesmo 
aqueles que não tem Filial cadastrada.
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
LEFT JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
-- RESULTADO DA CONSULTA --
FUN_NOME FIL_NOME
JOÃO MATRIZ
JOAQUIM FILIAL 1
JOSÉ FILIAL 1
MÁRCIO FILIAL 2
PEDRO null
Repare que Pedro foi incluído no resultado, porém ele não possui uma Filial associada em 
seu cadastro. Este tipo de Join é o mais utilizado quando não se tem certeza que todos os 
registros possuem ligação entre as tabelas e também na maioria das vezes por questões 
de desempenho.
Right Join
Na segunda situação foi utilizado o Right Join, também conhecido apenas por Join, 
que aponta para a tabela FILIAL simbolizando a precedência da tabela da Direita, logo, 
concluímos que os dados da tabela Filial devem existir para que o registro seja trazido no 
Select.
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
RIGHT JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
-- AINDA PODEMOS UTILIZAR SEM A PALAVRA RIGHT
/*
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
*/
-- RESULTADO DA CONSULTA --
FUN_NOME FIL_NOME
JOÃO MATRIZ
JOAQUIM FILIAL 1
JOSÉ FILIAL 1
MÁRCIO FILIAL 2
Note que o funcionário Pedro desta vez não foi incluído na lista de resultados, isto ocorreu 
porque esta consulta traz apenas registros onde existe um cadastro de Filial para o 
Funcionário.
Inner Join
Temos ainda a situação do Inner Join que nada mais faz do que observar se existem 
registros combinados em ambas as tabelas, ou seja, para que um registro seja incluído na 
lista de resultados, o campo de ligação entre duas tabelas deve satisfazer as condições 
em ambas. O resultado desta consulta seria algo muito semelhante ao Join.
Fonte:
http://www.prosige.com.br

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes