Olá, continuando a falar sobre os tipos de junções hoje iremos abordar a junção FULL OUTER JOIN.
O operador FULL OUTER JOIN (ou FULL JOIN) tem como função unir e retornar os dados de 2 ou mais tabelas utilizando algum dado que seja comum entre elas. De um modo geral esse dado compreende suas chaves primárias e extrangeiras. Para facilitar a compreensão, nesse artigo não vou utilizar o banco AdventureWorks. Vejamos no script abaixo os resultados que serão retornados.
-- Criar tabelas temporárias
create table #FUNCIONARIO
(
IDFUNC INT,
NOME VARCHAR(40),
IDDEPAR INT NULL
)
CREATE TABLE #DEPARTAMENTO
(
IDDEPAR INT,
DESCRI VARCHAR(40)
)
-- Inserir dados para teste
INSERT INTO #FUNCIONARIO VALUES(1,'MARIA',NULL)
INSERT INTO #FUNCIONARIO VALUES(2,'JOSE',NULL)
INSERT INTO #FUNCIONARIO VALUES(3,'JOAO',1)
INSERT INTO #FUNCIONARIO VALUES(4,'ANA',2)
INSERT INTO #FUNCIONARIO VALUES(5,'SILVA',3)
INSERT INTO #DEPARTAMENTO VALUES (1, 'RH')
INSERT INTO #DEPARTAMENTO VALUES (2, 'ADM')
INSERT INTO #DEPARTAMENTO VALUES (3, 'FIN')
INSERT INTO #DEPARTAMENTO VALUES (4, 'PATR')
INSERT INTO #DEPARTAMENTO VALUES (5, 'SEG')
-- Executar select
SELECT F.IDFUNC, F.NOME, F.IDDEPAR, D.IDDEPAR, D.DESCRI FROM #DEPARTAMENTO D FULL OUTER JOIN #FUNCIONARIO F ON F.IDDEPAR = D.IDDEPAR;
-- Resultado do select
Analisando o resultado podemos chegar a conclusão que o operador FULL JOIN funciona como uma união dos operadores LEFT JOIN e RIGHT JOIN. Execute o select abaixo e compare os resultados.
-- select com union
SELECT F.IDFUNC, F.NOME, F.IDDEPAR, D.IDDEPAR, D.DESCRI FROM #DEPARTAMENTO D LEFT JOIN #FUNCIONARIO F ON F.IDDEPAR = D.IDDEPAR
UNION
SELECT F.IDFUNC, F.NOME, F.IDDEPAR, D.IDDEPAR, D.DESCRI FROM #DEPARTAMENTO D RIGHT JOIN #FUNCIONARIO F ON F.IDDEPAR = D.IDDEPAR
Nenhum comentário:
Postar um comentário