Algoritmos de Junção – Sort-Merge Join Hash Join AULA 17 Profa. Sandra de Amo GBC053 – BCC 2013-1.
Inner Join
-
Upload
danilo-alves -
Category
Technology
-
view
3.871 -
download
0
Transcript of Inner Join
![Page 1: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/1.jpg)
PC IIETEC Antônio Devisate
Aula 02: Comandos SQLPesquisas em Múltiplas Tabelas
Profa Ms.Larissa Pavarini da Luz
![Page 2: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/2.jpg)
Comandos SQLPesquisa em Múltiplas Tabelas
Vínculo de Informação de dados de várias tabelas de forma a apresentar a informação de maneira correta.
A isto é dado o nome de união de tabelas (join).
A união se dá por meio de chaves primárias e estrangeiras. Elas são as colunas que as tabelas têm em comum.
![Page 3: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/3.jpg)
Comandos SQLUnião de Tabelas
Para realizar a união de tabelas basta acrescentar após a cláusula FROM do comando SELECT as tabelas que se deseja unir.Deve-se colocar na Cláusula WHERE a condição de união das tabelas, ou seja, as respectivas chaves primária e estrangeira.SINTAXE:
Select [tabela1.]coluna[,[tabela2.]coluna...]from tabela1, tabela2,[...]where tabela1.chave_primaria = tabela2.chave_estrangeira;
![Page 4: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/4.jpg)
Comandos SQL Conceito de Qualificador de Nome
O qualificador de nome consiste no nome da tabela seguido de um ponto (.) e o nome da coluna na tabela.
O qualificador de nome para a coluna GRAVADORA da tabela CD será:
CD.gravadora;
![Page 5: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/5.jpg)
Comandos SQLProduto Cartesiano
Ocorrerá um produto cartesiano sempre que:A condição de união entre as tabelas for omitida (não houver cláusula where)
A condição de união entre as tabelas for inválida (cláusula where incorreta)
Todas as linhas da primeira tabela estiverem unidas a todas as linhas da segunda tabela.
Nessa situação, as linhas da primeira tabela serão combinadas com as linhas da segunda tabela, demonstrando um resultado na maior parte das vezes indesejado.Utilizado apenas para teste de performance
![Page 6: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/6.jpg)
Comandos SQL União de Tabelas
Exemplo de produto Cartesiano:Select CD.cod_CD, CD.Nome, MUSICA.generoFrom CD, MUSICA;
![Page 7: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/7.jpg)
Comandos SQL
Como existem 3 linhas em CD e 3 linhas em MUSICA, chega a um total de 9 linhas (3*3) na busca. Como se nota há um linha de música para cada cd.
Torna-se assim uma informação incorreta.
Usa-se muito a cláusula WHERE
![Page 8: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/8.jpg)
Comandos SQLUnião Regular (inner join)
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.
Select CD.cod_CD, CD.Nome, MUSICA.generoFrom CD, MUSICAWhere CD.cod_cd = MUSICA.cod_cd;
![Page 9: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/9.jpg)
Comandos SQL União Regular (inner join)
Dada as seguintes tabelas:
CLIENTE
Codigo_cliente
Nome_cliente
Estado
cidade
PEDIDO
Num_pedido
Codigo_cliente
Codigo_vendedor
Prazo_entrega
quantidade
ITEM_PEDIDO
Num_pedido
Codigo_produto
PRODUTO
Codigo_produto
descricao
VENDEDOR
Cod_vendedor
Nome_vendedor
salario
![Page 10: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/10.jpg)
Comandos SQL União Regular (inner join)
Exemplos:Ver os pedidos de cada cliente
tabelas usadas cliente e pedido
![Page 11: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/11.jpg)
Comandos SQL União Regular (inner join)
Ver os pedidos de cada vendedortabelas usadas pedido e vendedor
![Page 12: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/12.jpg)
Comandos SQL União Regular (inner join)
Quais clientes tem prazo de entrega superior a 15 dias e pertencem aos estados de São Paulo (‘SP’) ou Rio de Janeiro (‘RJ’)?
Comandos utilizados?Operadores SQL e Operadores Lógicos
![Page 13: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/13.jpg)
Comandos SQL União Regular (inner join)
Apresentar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor.
![Page 14: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/14.jpg)
Comandos SQL União Regular (inner join)
Para que não escrever todas as vezes o nome da tabela nas qualificações de nome, é possível utilizar ALIASES (apelidos) definidos na própria consulta.
A definição dos ALIASES é feita na cláusula FROM e utilizada normalmente nas outras cláusulas.
Select, where, group by e etc.SELECT C.nome_cliente, P.prazo_entregaFROM CLIENTE C, PEDIDO PWHERE C.cod_cliente = P.codigo_clienteOrder by P.prazo_entrega DESC;
![Page 15: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/15.jpg)
Comandos SQL União Regular (inner join)
Apresente os vendedores (ordenados) que emitiram pedidos com prazos de entrega superiores a 15 dias e tenham salários fixos iguais ou superiores a R$1.000,00.
![Page 16: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/16.jpg)
Comandos SQLUnião de mais de duas Tabelas
Freqüentemente é necessário unir mais de duas tabelas para fornecer uma informação relevante do BD.
Exemplo:Apresente os clientes (ordenados) que tenham prazo de
entrega maior que 15 dias para o produto ‘Queijo’ e sejam do Rio de Janeiro.
![Page 17: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/17.jpg)
Comandos SQL União de mais de duas Tabelas
Para resolver este problema será preciso usar as seguintes tabelas:
Rio de Janeiro estado de um cliente Tabela CLIENTE
Prazo de entrega tem que ser maior (>) 15 prazo de entrega de um pedido
Tabela PEDIDO
Produto é um Queijo descrição do produtoTabela PRODUTO
Numero do pedido no ITEM Tabela ITEM_PEDIDO
![Page 18: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/18.jpg)
Comandos SQL União de mais de duas Tabelas
Cliente
Codigo_cliente
Nome_cliente
estado
= ‘RJ’
Pedido
Num_pedido
Codigo_cliente
prazo_entrega
> 15
Item Pedido
Num_pedido
Codigo_prod
Produto
Codigo_prod
descrição
Queijo
![Page 19: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/19.jpg)
Comandos SQL União de mais de duas Tabelas
Mostre todos os vendedores que venderam chocolate em quantidade superior a 10 kg.
vendedores, produto,pedido, item_pedido
![Page 20: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/20.jpg)
Comandos SQL União de mais de duas Tabelas
Quantos clientes fizeram pedido com o vendedor João?
Cliente, vendedor e pedido
![Page 21: Inner Join](https://reader033.fdocumentos.com/reader033/viewer/2022042514/559450f71a28abc84f8b458b/html5/thumbnails/21.jpg)
Comandos SQL União de mais de duas Tabelas
Quantos clientes da cidade do Rio de Janeiro e de Niterói tiveram seus pedidos tirados com o vendedor João?
Cliente, pedido e vendedor