• Nenhum resultado encontrado

Tecnologias e Linguagens para Banco de Dados II. Pesquisando multiplas tabelas com joins

N/A
N/A
Protected

Academic year: 2021

Share "Tecnologias e Linguagens para Banco de Dados II. Pesquisando multiplas tabelas com joins"

Copied!
8
0
0

Texto

(1)

Tecnologias e Linguagens

Tecnologias e Linguagens

para Banco de Dados II

para Banco de Dados II

Aula 6

Aula 6

4329: Relacionando dados de multiplas tabelas

4329: Relacionando dados de multiplas tabelas

Pesquisando multiplas tabelas com joins

Pesquisando multiplas tabelas com joins

Pesquisando multiplas

Pesquisando multiplas

tabelas com joins

tabelas com joins

INNER JOIN

INNER JOIN

OUTER JOIN

OUTER JOIN

CROSS JOIN (Produto Cartesiano)

CROSS JOIN (Produto Cartesiano)

UNION

UNION

INNER JOIN

(2)

4

4

INNER JOIN

INNER JOIN





Usa um operador de comparação para relacionar os

Usa um operador de comparação para relacionar os

dados de duas tabelas

dados de duas tabelas





Pode ser definido na clausula FROM ou na clausula

Pode ser definido na clausula FROM ou na clausula

WHERE

WHERE



Porém evite relacionar tabelas através da clausula WHEREPorém evite relacionar tabelas através da clausula WHERE





Valores NULL não podem ser comparados

Valores NULL não podem ser comparados





Sintaxe:

Sintaxe:



FROM <tabela_a> [AS a] INNER JOIN <tabela_b> [AS b] FROM <tabela_a> [AS a] INNER JOIN <tabela_b> [AS b]

ON <tabela_a>.<campo1> = <tabela_b>.<campo1>

ON <tabela_a>.<campo1> = <tabela_b>.<campo1>

5

5

Exemplo1: INNER JOIN

Exemplo1: INNER JOIN

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT e.EmployeeID, e.ManagerID,

SELECT e.EmployeeID, e.ManagerID,

c.FirstName + ' ' + UPPER(c.LastName) AS

c.FirstName + ' ' + UPPER(c.LastName) AS

Name, e.Title

Name, e.Title

FROM HumanResources.Employee AS e

FROM HumanResources.Employee AS e

INNER JOIN Person.Contact AS c ON

INNER JOIN Person.Contact AS c ON

e.ContactID = c.ContactID;

e.ContactID = c.ContactID;

GO

GO

Exemplo2: INNER JOIN

Exemplo2: INNER JOIN

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT s.Name AS StoreName, so.SalesOrderNumber,

SELECT s.Name AS StoreName, so.SalesOrderNumber,

so.OrderDate, so.TotalDue

so.OrderDate, so.TotalDue

FROM Sales.Store AS s

FROM Sales.Store AS s

INNER JOIN Sales.SalesOrderHeader AS so ON

INNER JOIN Sales.SalesOrderHeader AS so ON

s.CustomerID = so.CustomerID

s.CustomerID = so.CustomerID

ORDER BY s.Name, so.OrderDate;

ORDER BY s.Name, so.OrderDate;

GO

(3)

7 7

Relacionando Multiplas

Relacionando Multiplas

Tabelas

Tabelas

USE AdventureWorks; USE AdventureWorks; GO GO

SELECT p.Name 'Descição do Produto', v.Name AS 'Fornecedor'

SELECT p.Name 'Descição do Produto', v.Name AS 'Fornecedor'

FROM Production.Product AS p JOIN Purchasing.ProductVendor

FROM Production.Product AS p JOIN Purchasing.ProductVendor

AS pv AS pv ON p.ProductID = pv.ProductID ON p.ProductID = pv.ProductID JOIN Purchasing.Vendor AS v JOIN Purchasing.Vendor AS v ON pv.VendorID = v.VendorID ON pv.VendorID = v.VendorID WHERE ProductSubcategoryID = 15; WHERE ProductSubcategoryID = 15; GO GO 8 8

OUTER JOIN

OUTER JOIN



Retorna todos os registros de (ao menos) uma das tabelas Retorna todos os registros de (ao menos) uma das tabelas relacionadas

relacionadas



LEFT OUTER JOINLEFT OUTER JOIN 

Seleciona TODOS os registros da tabela a ESQUERDA e preenche comSeleciona TODOS os registros da tabela a ESQUERDA e preenche com NULL os campos da tabela a direita não relacionados

NULL os campos da tabela a direita não relacionados



RIGHT OUTER JOINRIGHT OUTER JOIN 

Seleciona TODOS os registros da tabela a DIREITA e preenche com Seleciona TODOS os registros da tabela a DIREITA e preenche com NULL os campos da tabela a ESQUERDA não relacionados

NULL os campos da tabela a ESQUERDA não relacionados



FULL OUTER JOINFULL OUTER JOIN 

Seleciona TODOS os registros de TODAS AS TABELAS e preenche Seleciona TODOS os registros de TODAS AS TABELAS e preenche com NULL os campos das tabelas que não se relacionam

com NULL os campos das tabelas que não se relacionam

LEFT OUTER JOIN

LEFT OUTER JOIN

Sales.SalesPerson

Sales.SalesPerson Sales.SalesTerritorySales.SalesTerritory

Production.Product

(4)

10

10

LEFT OUTER JOIN

LEFT OUTER JOIN

Exemplo1

Exemplo1

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT st.Name AS Territory, sp.SalesPersonID

SELECT st.Name AS Territory, sp.SalesPersonID

FROM Sales.SalesPerson AS sp

FROM Sales.SalesPerson AS sp

LEFT OUTER JOIN Sales.SalesTerritory AS st

LEFT OUTER JOIN Sales.SalesTerritory AS st

ON st.TerritoryID = sp.TerritoryID;

ON st.TerritoryID = sp.TerritoryID;

GO

GO

11 11

LEFT OUTER JOIN

LEFT OUTER JOIN

Exemplo2

Exemplo2

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT p.Name, pr.ProductReviewID

SELECT p.Name, pr.ProductReviewID

FROM Production.Product AS p

FROM Production.Product AS p

LEFT OUTER JOIN Production.ProductReview AS pr

LEFT OUTER JOIN Production.ProductReview AS pr

ON p.ProductID = pr.ProductID

ON p.ProductID = pr.ProductID

ORDER BY pr.ProductReviewID DESC;

ORDER BY pr.ProductReviewID DESC;

GO

GO

RIGHT OUTER JOIN

RIGHT OUTER JOIN

Sales.SalesPerson

Sales.SalesPerson

Sales.SalesTerritory

(5)

13

13

RIGHT OUTER JOIN

RIGHT OUTER JOIN

Exemplo

Exemplo

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT st.Name AS Territory, sp.SalesPersonID

SELECT st.Name AS Territory, sp.SalesPersonID

FROM Sales.SalesTerritory AS st

FROM Sales.SalesTerritory AS st

RIGHT OUTER JOIN Sales.SalesPerson AS sp

RIGHT OUTER JOIN Sales.SalesPerson AS sp

ON st.TerritoryID = sp.TerritoryID;

ON st.TerritoryID = sp.TerritoryID;

GO

GO

14 14

FULL OUTER JOIN

FULL OUTER JOIN

Sales.SalesPerson

Sales.SalesPerson

Sales.SalesTerritory

Sales.SalesTerritory

FULL OUTER JOIN

FULL OUTER JOIN

Exemplo

Exemplo

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT p.Name, sod.SalesOrderID

SELECT p.Name, sod.SalesOrderID

FROM Production.Product p

FROM Production.Product p

FULL OUTER JOIN Sales.SalesOrderDetail

FULL OUTER JOIN Sales.SalesOrderDetail

sod

sod

ON p.ProductID = sod.ProductID;

ON p.ProductID = sod.ProductID;

GO

GO

(6)

16 16

CROSS JOIN

CROSS JOIN

17 17

CROSS JOIN

CROSS JOIN





Gera registros que contém:

Gera registros que contém:



Cada registro da tabela a esquerda combinado comCada registro da tabela a esquerda combinado com



Cada registro da tabela a direitaCada registro da tabela a direita





Produto Cartesiano

Produto Cartesiano





Por ser um resultado normalmente muito grande de

Por ser um resultado normalmente muito grande de

registros retornados o SQL Server

registros retornados o SQL Server



Cria um arquivo temporário em TempDBCria um arquivo temporário em TempDB



Perde performancePerde performance





Pode ser possível combinar campos e gerar um

Pode ser possível combinar campos e gerar um

resultado único (Massa de dados de teste e exemplo)

resultado único (Massa de dados de teste e exemplo)

CROSS JOIN

CROSS JOIN

Exemplo

Exemplo

USE AdventureWorks;

USE AdventureWorks;

GO

GO

SELECT e.EmployeeID, d.Name AS Department

SELECT e.EmployeeID, d.Name AS Department

FROM HumanResources.Employee AS e

FROM HumanResources.Employee AS e

CROSS JOIN HumanResources.Department AS d

CROSS JOIN HumanResources.Department AS d

ORDER BY e.EmployeeID, d.Name;

ORDER BY e.EmployeeID, d.Name;

GO

(7)

19 19

UNION

UNION





Sintaxe:

Sintaxe:





declaracao_select UNION [ALL] declaracao_select

declaracao_select UNION [ALL] declaracao_select





Existe um DISTINCT implícito na declaração

Existe um DISTINCT implícito na declaração





Colunas da primeira declaração select devem ser

Colunas da primeira declaração select devem ser

iguais às da segunda declaração select

iguais às da segunda declaração select





ALL

ALL





Permite retornar todas as linhas da segunda

Permite retornar todas as linhas da segunda

consulta, o que melhora a performance da consulta

consulta, o que melhora a performance da consulta

20

20

UNION

UNION





Declarações select serão avaliadas da esquerda para a

Declarações select serão avaliadas da esquerda para a

direita, parênteses redefinem a ordem

direita, parênteses redefinem a ordem





Conversão de dados implícita garante o sucesso da

Conversão de dados implícita garante o sucesso da

consulta

consulta





Regras de uso do UNION:

Regras de uso do UNION:



Mesmo número de colunas com tipos de dados compatíveisMesmo número de colunas com tipos de dados compatíveis



ORDER BY ou COMPUTE são clausulas aplicadas após a ORDER BY ou COMPUTE são clausulas aplicadas após a

ultima declaração UNION no resultado final

ultima declaração UNION no resultado final



GROUP BY e HAVING devem ser aplicados a cada GROUP BY e HAVING devem ser aplicados a cada

declaração select declaração select

Exemplo1: UNION

Exemplo1: UNION

USE AdventureWorks; USE AdventureWorks; GO GO SELECT EmployeeID AS ID SELECT EmployeeID AS ID FROM HumanResources.Employee FROM HumanResources.Employee UNION UNION SELECT DepartmentID SELECT DepartmentID FROM HumanResources.Department FROM HumanResources.Department ORDER BY EmployeeID; ORDER BY EmployeeID; GO GO 

Adicione o comando ALL ao lado de UNION e observe o resultadoAdicione o comando ALL ao lado de UNION e observe o resultado 

Execute a primeira declaração select (comente as linhas de 6 a 8Execute a primeira declaração select (comente as linhas de 6 a 8))



(8)

22 22

Exemplo2: UNION

Exemplo2: UNION

USE AdventureWorks; USE AdventureWorks; GO GO

SELECT EmployeeID AS ID, Title AS Name

SELECT EmployeeID AS ID, Title AS Name

FROM HumanResources.Employee

FROM HumanResources.Employee

UNION

UNION

SELECT AddressID, AddressLine1

SELECT AddressID, AddressLine1

FROM Person.Address

FROM Person.Address

UNION

UNION

SELECT ContactID, FirstName

SELECT ContactID, FirstName

FROM Person.Contact

FROM Person.Contact

UNION

UNION

SELECT ContactTypeID, Name

SELECT ContactTypeID, Name

FROM Person.ContactType

FROM Person.ContactType

UNION

UNION

SELECT ProductID, Name

SELECT ProductID, Name

FROM Production.Product FROM Production.Product 23 23

Exemplo3: UNION

Exemplo3: UNION

USE AdventureWorks; USE AdventureWorks; GO GO

SELECT ProductID, ListPrice AS Price

SELECT ProductID, ListPrice AS Price

FROM Production.Product

FROM Production.Product

UNION ALL

UNION ALL

(SELECT ProductID, UnitPrice

(SELECT ProductID, UnitPrice

FROM Purchasing.PurchaseOrderDetail

FROM Purchasing.PurchaseOrderDetail

UNION

UNION

SELECT ProductID, UnitPrice

SELECT ProductID, UnitPrice

FROM Sales.SalesOrderDetail);

FROM Sales.SalesOrderDetail);

GO

GO



Alterne a posição dos parênteses e do comando ALL para obter Alterne a posição dos parênteses e do comando ALL para obter resultados diferentes.

Referências

Documentos relacionados

b) Execução dos serviços em período a ser combinado com equipe técnica. c) Orientação para alocação do equipamento no local de instalação. d) Serviço de ligação das

Tendo como parâmetros para análise dos dados, a comparação entre monta natural (MN) e inseminação artificial (IA) em relação ao número de concepções e

Para verificar a existência de associação entre as variáveis de interesse (tipo de IAM, tipo de serviço de saúde procurado no primeiro atendimento, número de serviços percorridos

Este trabalho objetivou com auxílio da fotointerpretação e da análise multivariada analisar os parâmetros dimensionais da rede de drenagem através de 12 microbacias de 3 a ordem

Este trabalho é resultado de uma pesquisa quantitativa sobre a audiência realizada em 1999 envolvendo professores e alunos do Núcleo de Pesquisa de Comunicação da Universidade

Com a realização da Ficha de Diagnóstico, o professor deve averiguar as aprendizagens dos alunos já realizadas sobre números racionais não negativos – operações e propriedades.

Medição de Radiação Térmica com Modulador Sigma-Delta Termoresistivo Tese de Doutorado em Engenharia Elétrica - Valter Rosa - UFBA-SET2016.. Figura 4.9 Foto da bancada de testes

No balanço social de 2005 da Embrapa, verificou-se que a pesquisa agropecuária realizada pela Embrapa apresentou o impacto econômico de 12,9 bilhões de reais, o que representa o