Inner Join

21
PC II ETEC Antônio Devisate Aula 02: Comandos SQL Pesquisas em Múltiplas Tabelas Prof a Ms.Larissa Pavarini da Luz [email protected]

Transcript of Inner Join

Page 1: Inner Join

PC IIETEC Antônio Devisate

Aula 02: Comandos SQLPesquisas em Múltiplas Tabelas

Profa Ms.Larissa Pavarini da Luz

[email protected]

Page 2: Inner Join

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

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

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

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

Comandos SQL União de Tabelas

Exemplo de produto Cartesiano:Select CD.cod_CD, CD.Nome, MUSICA.generoFrom CD, MUSICA;

Page 7: Inner Join

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

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

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

Comandos SQL União Regular (inner join)

Exemplos:Ver os pedidos de cada cliente

tabelas usadas cliente e pedido

Page 11: Inner Join

Comandos SQL União Regular (inner join)

Ver os pedidos de cada vendedortabelas usadas pedido e vendedor

Page 12: Inner Join

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

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

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

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

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

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

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

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

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

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