PC II ETEC Antônio Devisate Aula 02:   Comandos SQL Pesquisas em Múltiplas Tabelas Prof a  Ms.Larissa Pavarini da Luz [email_address]
Comandos SQL Pesquisa 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 SQL Uniã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 SQL Produto 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. genero From  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 SQL Uniã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. genero From  CD, MUSICA Where  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 vendedor tabelas 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_entrega FROM CLIENTE  C , PEDIDO  P WHERE  C . cod_cliente =  P . codigo_cliente Order 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 SQL Uniã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 produto Tabela 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

Inner Join

  • 1.
    PC II ETECAntônio Devisate Aula 02: Comandos SQL Pesquisas em Múltiplas Tabelas Prof a Ms.Larissa Pavarini da Luz [email_address]
  • 2.
    Comandos SQL Pesquisaem 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.
  • 3.
    Comandos SQL Uniãode 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;
  • 4.
    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;
  • 5.
    Comandos SQL ProdutoCartesiano 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
  • 6.
    Comandos SQL União de Tabelas Exemplo de produto Cartesiano: Select CD. cod_CD, CD. Nome, MUSICA. genero From CD, MUSICA;
  • 7.
    Comandos SQL Comoexistem 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
  • 8.
    Comandos SQL UniãoRegular (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. genero From CD, MUSICA Where CD. cod_cd = MUSICA. cod_cd;
  • 9.
    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
  • 10.
    Comandos SQL União Regular (inner join) Exemplos: Ver os pedidos de cada cliente tabelas usadas  cliente e pedido
  • 11.
    Comandos SQL União Regular (inner join) Ver os pedidos de cada vendedor tabelas usadas  pedido e vendedor
  • 12.
    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
  • 13.
    Comandos SQL União Regular (inner join) Apresentar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor.
  • 14.
    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_entrega FROM CLIENTE C , PEDIDO P WHERE C . cod_cliente = P . codigo_cliente Order by P . prazo_entrega DESC;
  • 15.
    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.
  • 16.
    Comandos SQL Uniãode 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.
  • 17.
    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 produto Tabela PRODUTO Numero do pedido no ITEM Tabela ITEM_PEDIDO
  • 18.
    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
  • 19.
    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
  • 20.
    Comandos SQL União de mais de duas Tabelas Quantos clientes fizeram pedido com o vendedor João? Cliente, vendedor e pedido
  • 21.
    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