A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Elaboração de Consulta Continuação 7/abril/2006. Modelo.

Apresentações semelhantes


Apresentação em tema: "Elaboração de Consulta Continuação 7/abril/2006. Modelo."— Transcrição da apresentação:

1 Elaboração de Consulta Continuação 7/abril/2006

2 Modelo

3 Auto- junção Seja a tabela Cliente

4 Auto-junção O código do cliente-indicador é o código do cliente que indicou aquela empresa. Ex. MACDONALDS foi indicada pela Brastemp, BOBS pela Embraco, etc. A EMBRACO e BRASTEMP não foram indicadas por ninguém ( cd_cliente_indicador is null )

5 Auto-junção O usuário solicitou um relatório de nome dos clientes e de seus respectivos indicadores Cd_cliente, nm_cliente, cd_cliente_indicador 1, Brastemp, null, 2, Embraco, null 3, Mcdonalds, 1 4, Bobs, 2 5, Grendelli, 3 6, Jo Calcados, 4

6 Auto-junção Ou self join É usada para efetuar junção de uma tabela a si mesma, como se fosse duas tabelas, renomeando temporariamente, ao menos, uma tabela na instrução SQL

7 Auto- junção SELECT A.nm_cliente as INDICADO, I.nm_cliente as INDICADOR FROM CLIENTE A inner join CLIENTE I ON ( I.cd_cliente = A.cd_cliente_indicador)

8 Auto-junção Note os apelidos dados aos campos de saída

9 JOIN... ON/USING... CLIENTECONTATO 1, Maria 2, Joelma 3, Carlos 4, Andre Cd-cliente, cd-contato, nm_contatoCd-cliente, nm_cliente 1, 1, Aldeny 1, 2, Jose 3, 1, Antonio 3, 2, Ildefonso Maria, Aldeny Maria, Jose Carlos, Antonio Carlos, Ildefonso SELECT nm_cliente, nm_contato FROM cliente INNER JOIN contato USING(cd_cliente)

10 Junção Externa OUTER JOIN É empregada quando há necessidade de forçar nulos para aparecimento de alguns valores sem correspondência em uma das tabelas Três variações: –LEFT OUTER JOIN –RIGHT OUTER JOIN –FULL OUTER JOIN

11 JOIN... ON/USING... CLIENTECONTATO 1, Maria 2, Joelma 3, Carlos 4, Andre Cd-cliente, cd-contato, nm_contatoCd-cliente, nm_cliente 1, 1, Aldeny 1, 2, Jose 3, 1, Antonio 3, 2, Ildefonso Maria, Aldeny Maria, Jose Carlos, Antonio Carlos, Ildefonso Joelma, (null) Andre, (null) Listar todos os nomes de clientes e nomes de contatos, quem não tiver contato, deve aparecer !!!

12 Por que LEFT ? Sintaxe –SELECT... FROM tab1 LEFT [OUTER] JOIN tab2 ON ( tab1.cd = tab2.o_cd) JOIN : Trabalha-se as tabelas de 2 a 2 LEFT [OUTER] JOIN

13 –SELECT... FROM tab1 LEFT [OUTER] JOIN tab2 ON ( tab1.cd = tab2.o_cd) Recuperar todos dados da 1ª tabela (que precede o JOIN: tab1 ) mesmo que o dado de tab1 não tenha correspondência em tab2 : um nulo será forçado. Ex. JOELMA (cliente) => ? (contato) LEFT [OUTER] JOIN

14 CLIENTECONTATO 1, Maria 2, Joelma 3, Carlos 4, Andre Cd-cliente, cd-contato, nm_contatoCd-cliente, nm_cliente 1, 1, Aldeny 1, 2, Jose 3, 1, Antonio 3, 2, Ildefonso Maria, Aldeny Maria, Jose Carlos, Antonio Carlos, Ildefonso Joelma, Andre, SELECT nm_cliente, nm_contato FROM cliente LEFT [OUTER] JOIN contato USING(cd_cliente) LEFT [OUTER] JOIN

15 Por que RIGHT ? Sintaxe SELECT... FROM tab1 RIGHT [OUTER] JOIN tab2 ON ( tab1.cd = tab2.o_cd) Quando se deseja recuperar os todos dados da 2ª tabela ( que precede o JOIN) mesmo os dados de tab2 não tenham correspondência em tab1 RIGHT [OUTER] JOIN

16 CLIENTECONTATO 1, Maria 2, Joelma 3, Carlos 4, Andre Cd-cliente, cd-contato, nm_contatoCd-cliente, nm_cliente 1, 1, Aldeny 1, 2, Jose 3, 1, Antonio 3, 2, Ildefonso Maria, Aldeny Maria, Jose Carlos, Antonio Carlos, Ildefonso Joelma, Andre, SELECT nm_cliente, nm_contato FROM contato RIGHT [OUTER] JOIN cliente USING(cd_cliente) RIGHT [OUTER] JOIN

17 auto junção com junção externa Liste todos os clientes e seus respectivos indicadores... Os clientes que não tem indicadores também devem aparecer...

18 FULL OUTER JOIN Recuperação de valores dos dois lados ( duas tabelas) sem descartar as não - correspondências

19 JOIN Caso 1: cd_aluno, matricula têm mesmo domínio de valores SELECT nm_aluno FROM aluno a INNER JOIN func f ON a.cd_aluno = f.matricula Apenas - José - André 01343, Maria 01445, José 04556, Carlos 05300,Serafim 20030, Jorge 23922,Luiza 25678, Valdir 35876, André 30134, Ariane 01445, José 34056, Henri 33420,Castro 32310, Joao 33222,Lair 31228, Adir 35976, André 34584, Lea Cd_aluno, nm_aluno matricula, nm_func Aluno Func

20 JOIN Select nm_aluno, nm_funcionario FROM Aluno a LEFT JOIN Func f ON a.cd_aluno = f.matricula Maria, José, José Carlos, Serafim, Jorge, Luiza, Valdir, André, André 01343, Maria 01445, José 04556, Carlos 05300,Serafim 20030, Jorge 23922,Luiza 25678, Valdir 35876, André 30134, Ariane 01445, José 34056, Henri 33420,Castro 32310, Joao 33222,Lair 31228, Adir 35976, André 34584, Lea Cd_aluno, nm_aluno matricula, nm_func Aluno Func

21 FULL OUTER JOIN Select nm_aluno, nm_funcionario FROM Aluno a FULL JOIN Func f ON a.cd_aluno = f.matricula Maria, José, José Carlos, Serafim, Jorge, Luiza, Valdir, André,, Ariane, Henri, Castro, Joao, Lair, Adir, Lea 01343, Maria 01445, José 04556, Carlos 05300,Serafim 20030, Jorge 23922,Luiza 25678, Valdir 35876, André 30134, Ariane 01445, José 34056, Henri 33420,Castro 32310, Joao 33222,Lair 31228, Adir 35976, André 34584, Lea Cd_aluno, nm_aluno matricula, nm_func Aluno Func


Carregar ppt "Elaboração de Consulta Continuação 7/abril/2006. Modelo."

Apresentações semelhantes


Anúncios Google