🔍 Cláusula FULL OUTER JOIN
O FULL OUTER JOIN é uma operação SQL usada para combinar registros de duas tabelas. Diferente de outros tipos de junção como LEFT JOIN, RIGHT JOIN e INNER JOIN, o FULL OUTER JOIN retorna todos os registros de ambas as tabelas, independentemente de haver correspondência. Caso não haja correspondência, os campos da tabela que não possuem dados serão preenchidos com NULL.
🎯 Utilidade do FULL OUTER JOIN
O FULL OUTER JOIN é muito útil quando é necessário combinar todos os registros de duas tabelas, incluindo tanto os dados que têm correspondência quanto os que não têm. Ele é amplamente utilizado em relatórios e análises, garantindo uma visão completa dos dados de ambas as tabelas, sem excluir informações parciais ou incompletas.
📝 Exemplo de Uso
Vamos considerar as tabelas D2D_Customers e D2D_Orders, que compartilham a coluna Customer_id. A consulta abaixo demonstra o uso do FULL OUTER JOIN:
SELECT
[Fields]
FROM
D2D_Customers D1
FULL OUTER JOIN D2D_Orders D2
ON D1.Customer_id= D2.Customer_id
🔹 Explicação:
-
Retorna todos os registros das duas tabelas.
-
Se um cliente não tiver um pedido, os campos da tabela D2D_Orders serão preenchidos com NULL.
-
Se houver um pedido sem um cliente associado, os campos da tabela D2D_Customers serão preenchidos com NULL.
📊 Representação Gráfica
No diagrama de Venn, o FULL OUTER JOIN representa todas as áreas de ambas as tabelas, incluindo os registros exclusivos de cada uma delas:
🔹 Azul: Registros comuns entre as tabelas.
🔹 Branco: Registros sem correspondência em uma das tabelas.
📌 Resultados da Consulta
✅ Caso 1: Correspondência Encontrada
Se um registro da tabela D2D_Customers encontrar correspondência pelo campo Customer_id na tabela D2D_Orders, os dados de ambas as tabelas serão combinados e exibidos.
⚠️ Caso 2: Sem Correspondência em D2D_Orders
Se um cliente não tiver pedidos, ele ainda será retornado, mas os campos da tabela D2D_Orders serão preenchidos com NULL.
⚠️ Caso 3: Sem Correspondência em D2D_Customers
Se um pedido não estiver associado a um cliente, ele também será retornado, mas os campos da tabela D2D_Customers serão preenchidos com NULL.
🛠️ Eliminando Registros sem Correspondência
Uma consulta com FULL OUTER JOIN pode ser ajustada para exibir apenas registros sem correspondência. Isso pode ser feito com a cláusula WHERE, verificando se Customer_id é NULL em qualquer uma das tabelas:
SELECT
[Fields]
FROM
D2D_Customers D1
FULL OUTER JOIN D2D_Orders D2
ON D1.Customer_id= D2.Customer_id
WHERE
D1.Customer_id IS NULL OR D2.Customer_id IS NULL;
🔹 Explicação:
-
Retorna apenas os registros que não têm correspondência entre as tabelas.
-
Clientes sem pedidos e pedidos sem clientes serão incluídos no resultado.
📊 Representação Gráfica
Nesta consulta, a representação no diagrama de Venn corresponde às áreas exclusivas das tabelas, excluindo a interseção:
Representação Gráfica
🔗 Relacionamentos 1:1 e 1:N
Assim como em outras junções, ao trabalhar com o FULL OUTER JOIN, é importante entender os tipos de relacionamento entre as tabelas:
🔹 Relacionamento 1:1 (Um para Um)
Cada registro de uma tabela tem, no máximo, um registro correspondente na outra tabela.
🔹 Relacionamento 1:N (Um para Muitos)
Um registro de uma tabela pode ter vários registros correspondentes na outra tabela, resultando em múltiplas linhas no resultado da consulta.
💡 Conclusão:
-
O FULL OUTER JOIN é uma ferramenta poderosa para garantir que todos os dados sejam considerados, mesmo que não haja correspondência entre as tabelas.
-
É amplamente utilizado em relatórios, auditorias e análises de dados onde é necessário capturar informações completas de ambas as tabelas.
-
Quando necessário, pode-se filtrar somente os registros sem correspondência para identificação de dados incompletos.