terça-feira, 27 de novembro de 2012

Sql Server JOINs - LEFT JOIN- Parte 2

Pessoal, dando continuidade aos tipos de junções entre tabelas vamos falar agora sobre as junções do tipo OUTER. Elas podem ser: LEFT, RIGHT e FULL. Nesta publicação falaremos especificamente a respeito da junção LEFT OUTER JOIN. A utilização deste operador permite fazer a junção entre duas tabelas, de modo que a tabela a esquerda do operador LEFT JOIN tenha todos os seus registros retornados (respeitando as condições da cláusula WHERE, se ela existir) independente de existir um registro correspondente na tabela a direita do operador LEFT JOIN. Utilizando o banco de dados AdventureWorks vamos ver um exemplo do funcionamento desse operador com o seguinte select:


SELECT P.FirstName, P.LastName,  P.BusinessEntityID, E.BusinessEntityID,  E.VacationHours, E.SickLeaveHours 
FROM Person.Person P 
LEFT OUTER JOIN HumanResources.Employee E 
ON E.BusinessEntityID = P.BusinessEntityID;

Os 3 primeiros registros retornados do select acima são:




Com base no resultado chegamos a conclusão que no registro 1 temos os campos FirstName, LastName e BusinessEntityID, ambos da tabela Person, e este registro tem uma referência na tabela Employee no campo   BusinessEntityID visto que o valor ambos os campos são iguais a 285, logo as colunas E.BusinessEntityID,  E.VacationHours e E.SickLeaveHours da tabela Employee tem dados. Porem os outros 2 registros não possuem referência na tabela Employee por isso não existe dados nas colunas E.BusinessEntityID,  E.VacationHours e E.SickLeaveHours.

Vimos no exemplo acima que utilizando o operador LEFT JOIN os dados da tabela Person sempre serão retornados, já os da tabela Employee, só serão retornados se existir referência com Person.

Versão do Sql Server utilizada nessa publicação:
Microsoft SQL Server 2008 (SP3) - 10.0.5512.0

Nenhum comentário:

Postar um comentário