inner join
Post on 02-Jul-2015
3.871 Views
Preview:
TRANSCRIPT
PC IIETEC Antônio Devisate
Aula 02: Comandos SQLPesquisas em Múltiplas Tabelas
Profa Ms.Larissa Pavarini da Luz
larissapavarinidaluz@yahoo.com.br
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.
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;
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;
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
Comandos SQL União de Tabelas
Exemplo de produto Cartesiano:Select CD.cod_CD, CD.Nome, MUSICA.generoFrom CD, MUSICA;
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
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;
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
Comandos SQL União Regular (inner join)
Exemplos:Ver os pedidos de cada cliente
tabelas usadas cliente e pedido
Comandos SQL União Regular (inner join)
Ver os pedidos de cada vendedortabelas usadas pedido e vendedor
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
Comandos SQL União Regular (inner join)
Apresentar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor.
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;
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.
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.
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
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
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
Comandos SQL União de mais de duas Tabelas
Quantos clientes fizeram pedido com o vendedor João?
Cliente, vendedor e pedido
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
top related