SQL: RIGHT JOIN 🔗

📌 Cláusula RIGHT JOIN

O RIGHT JOIN é uma operação em SQL usada para combinar registros de duas tabelas com base em colunas que possuem valores em comum. O RIGHT JOIN retorna todos os registros da tabela à direita (definida como a tabela principal), junto com os registros correspondentes da tabela à esquerda. Se não houver correspondência na tabela à esquerda, os campos dessa tabela serão preenchidos com NULL.


 

🎯 Utilidade do RIGHT JOIN

O RIGHT JOIN é especialmente útil quando você deseja garantir que todos os registros de uma tabela secundária sejam exibidos, mesmo que não tenham correspondência na tabela principal.

✔ É amplamente utilizado em situações onde você quer garantir que todos os dados de uma tabela complementar sejam retornados, como relatórios de vendas, onde se deseja listar todos os pedidos, incluindo aqueles que não estão associados a um cliente (devido a erros no sistema, por exemplo).

✔ Permite uma visão mais abrangente dos dados de uma tabela específica, neste caso, a tabela à direita.


 

📝 Exemplo de Uso

Vamos considerar as tabelas D2D_Customers e D2D_Orders. Ambas compartilham a coluna Customer_id, que será usada para vincular seus registros.

A consulta abaixo demonstra o uso do RIGHT JOIN:

SELECT
 [Fields]
FROM
 D2D_Customers D1
  RIGHT JOIN D2D_Orders D2
   ON D1.Customer_id= D2.Customer_id

🔹 No resultado desta consulta, será apresentado o valor NULL para campos da tabela D2D_Customers quando houver pedidos na tabela D2D_Orders que não estejam associados a um cliente.

📊 Representação Gráfica:

 
 
 
 
 
D2D_Customers
D2D_Orders

A parte exclusiva de D2D_Orders é preenchida, representando os pedidos sem clientes.


 

🛑 Eliminando do Resultado Pedidos sem Clientes

Podemos aplicar a condição IS NOT NULL para exibir apenas os pedidos que têm um cliente associado:

SELECT
 [Fields]
FROM
 D2D_Customers D1
  RIGHT JOIN D2D_Orders D2
   ON D1.Customer_id= D2.Customer_id
WHERE
 D1.Customer_id IS NOT NULL

📊 Representação Gráfica:

 
 
 
 
 
D2D_Customers
D2D_Orders

🔹 A interseção será a única parte preenchida, pois a consulta retorna apenas pedidos com um cliente associado.


 

🔍 Encontrando Pedidos Sem Clientes

Para identificar pedidos sem cliente, podemos usar a condição IS NULL:

SELECT
 [Fields]
FROM
 D2D_Customers D1
  RIGHT JOIN D2D_Orders D2
   ON D1.Customer_id= D2.Customer_id
WHERE
 D1.Customer_id IS NULL

📊 Representação Gráfica:

 
 
 
 
 
D2D_Customers
D2D_Orders

🔹 A parte exclusiva de D2D_Orders será preenchida, representando pedidos sem clientes.


 

📊 Resultados da Consulta

Caso 1: Correspondência Encontrada Se um registro da tabela D2D_Orders encontrar correspondência pelo campo Customer_id na tabela D2D_Customers, os dados de ambas as tabelas serão combinados e exibidos.

Caso 2: Sem Correspondência Se um registro da tabela D2D_Orders não tiver correspondência na tabela D2D_Customers, ele ainda será retornado, mas os campos correspondentes à tabela D2D_Customers serão preenchidos com NULL.


 

🔄 Relacionamentos 1:1 e 1:n

Assim como no LEFT JOIN, ao trabalhar com o RIGHT JOIN, é importante entender a natureza do relacionamento entre as tabelas envolvidas, pois isso influencia o resultado da consulta.

🔹 Relacionamento 1:1 (Um para Um)

Nesse tipo de relacionamento, cada registro na tabela D2D_Orders corresponde a, no máximo, um único registro na tabela D2D_Customers, e vice-versa.

📌 Com um relacionamento 1:1, ao fazer o RIGHT JOIN, não haverá duplicação de registros no resultado da consulta.

Exemplo de 1:1: Um cliente tem um único pedido, ou seja, há apenas uma ocorrência na tabela D2D_Orders para cada cliente.

🔹 Relacionamento 1:n (Um para Muitos)

Em um relacionamento 1:n, cada registro na tabela D2D_Orders pode ter vários registros correspondentes na tabela D2D_Customers.

📌 Isso significa que o RIGHT JOIN pode resultar em múltiplas linhas para um mesmo registro da tabela D2D_Orders.

Exemplo de 1:n: Um pedido pode estar vinculado a vários clientes (como em um sistema de marketplaces onde um pedido pode envolver diferentes fornecedores).


 

🎯 Conclusão

O RIGHT JOIN é uma ferramenta poderosa para consultas SQL, permitindo recuperar todos os registros da tabela secundária, mesmo quando não há correspondência na tabela principal.

✔ Ideal para análises completas e para evitar perda de dados essenciais em relatórios. ✔ Pode ser combinado com filtros IS NULL e IS NOT NULL para personalizar os resultados. ✔ Essencial para compreender a relação entre tabelas 1:1 e 1:n.

 

Data de Publicação: 04-09-2024

Categoria: SQL