SQLShack (Português)

Neste artigo, aprenderemos o SQL conceito de junções múltiplas e reforça nossos aprendizados com exemplos bastante simples, que são explicados com ilustrações. Em bancos de dados relacionais, os dados são armazenados em tabelas. Sem dúvida, e na maioria das vezes, precisamos de um conjunto de resultados formado pela combinação de dados de várias tabelas. As junções nos permitem combinar dados de duas ou mais tabelas para que possamos juntar dados das tabelas para que possamos facilmente recuperar dados de várias tabelas. Você pode se perguntar quantos tipos diferentes de junção existem no SQL Server. A resposta é que existem quatro tipos principais de junções no SQL Server. Em primeiro lugar, iremos descrevê-los brevemente usando ilustrações do diagrama de Venn:

  • A junção interna retorna as linhas que correspondem em ambas as tabelas

  • A junção à esquerda retorna todas as linhas da tabela à esquerda

  • A junção à direita retorna todas as linhas da tabela certa

  • A junção completa retorna linhas inteiras de ambas as tabelas

Se você não tem conhecimento sobre o conceito de junção SQL no SQL Server, você pode ver a visão geral dos tipos de junção SQL e o artigo do tutorial.

Após esta breve explicação sobre os tipos de junção SQL, passaremos por várias junções.

O que são junções múltiplas SQL?

As junções múltiplas podem ser descritas como segue; junção múltipla é uma consulta que contém os mesmos tipos de junção ou diferentes, que são usados mais de uma vez. Assim, ganhamos a capacidade de combinar várias tabelas de dados para superar problemas de banco de dados relacional.

Cenário de exemplo

A empresa Green-Tree lançou uma nova campanha para o Ano Novo e fez diferentes ofertas para seus clientes online. Como resultado de sua campanha, eles conseguiram converter algumas ofertas em vendas. Nos exemplos a seguir, descobriremos os detalhes dos dados da campanha de ano novo da empresa Green-Tree.

A empresa armazena esses detalhes dos dados da campanha nas tabelas a seguir. Agora, criaremos essas tabelas por meio da consulta a seguir e as preencheremos com alguns dados fictícios:

Como funcionam as junções múltiplas de SQL?

Problema de negócios: quais clientes estavam interessados neste ano novo campanha?

Para responder a esta pergunta, precisamos descobrir as linhas correspondentes para todas as tabelas porque alguns clientes não receberam uma oferta por e-mail e algumas ofertas não puderam ser convertidas em uma venda. O diagrama de Venn a seguir nos ajudará a descobrir as linhas correspondentes de que precisamos. Resumindo, o resultado dessa consulta deve ser a intersecção das linhas de todas as tabelas da consulta. A área cinza especifica estas linhas no diagrama de Venn:

A abordagem de junções múltiplas do SQL nos ajudará a juntar clientes online , pedidos e tabelas de vendas. Conforme mostrado no diagrama de Venn, precisamos combinar as linhas de todas as tabelas. Por esse motivo, combinaremos todas as tabelas com uma cláusula de junção interna. A consulta a seguir retornará um conjunto de resultados que é desejado de nós e responderá à pergunta:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, salestotal
FROM onlinecustomers AS oc
INNER JOIN
pedidos AS o
ON oc.customerid = o.customerid
INNER JOIN
vendas AS s
ON o.orderId = s.orderId

Inicialmente, iremos analisar a consulta. Uma cláusula de junção interna que está entre as tabelas onlinecustomers e pedidos derivou as linhas correspondentes entre essas duas tabelas. A segunda cláusula de junção interna que combina a tabela de vendas derivou as linhas correspondentes do conjunto de resultados anterior. A ilustração de tabelas coloridas a seguir nos ajudará a entender a correspondência de dados das tabelas unidas na consulta. As linhas amarelas especificam dados correspondentes entre clientes on-line e pedidos. Por outro lado, apenas as linhas de cor azul existem nas tabelas de vendas, então o resultado da consulta será linhas de cor azul:

O resultado da consulta terá a seguinte aparência:

Uso de diferentes tipos de junção em junções múltiplas SQL

Problema de negócio: Quais ofertas não puderam ser convertidas em venda?

Podemos usar os diferentes tipos de junções em uma única consulta para que possamos superar diferentes problemas de banco de dados relacional.Neste exemplo, precisamos de todas as linhas da tabela de pedidos, que correspondem às tabelas onlinecustomers. Por outro lado, essas linhas não existem na tabela de vendas. O diagrama de Venn a seguir nos ajudará a descobrir as linhas correspondentes de que precisamos. A área cinza indica as linhas que serão a saída da consulta:

Na primeira etapa, devemos combinar onlinecustomers e as tabelas de pedidos por meio da cláusula de junção interna porque a junção interna retorna todas as linhas correspondentes entre as tabelas de clientes e pedidos onlin. Na segunda etapa, combinaremos a tabela de pedidos com a tabela de vendas por meio da junção à esquerda e, em seguida, filtraremos os valores nulos porque precisamos eliminar as linhas que são armazenadas pela tabela de vendas:

1
2
3
4
5
6
7
8
9

SELECT customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
INNER JOIN
pedidos AS o
ON c.customerid = o.customerid
LEFT JOIN
vendas AS s
ON o.orderId = s.orderId
ONDE s.salesId IS NULL

O resultado da consulta irá tem esta aparência:

Quiz

Q uestão: Por favor, gere a consulta apropriada de acordo com o diagrama de Venn abaixo.

Resposta: Como aprendemos, a junção completa permite nos para retornar todas as linhas das tabelas combinadas. A pergunta respondida será como a seguinte:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
FULL JOIN
pedidos AS o
ON c.customerid = o.customerid
FULL JOIN
vendas AS s
ON o.orderId = s.orderId

Conclusão

Neste artigo, focamos na abordagem de junções múltiplas de SQL e a aprendemos com exemplos detalhados. Várias junções nos permitem combinar mais de duas tabelas para que possamos superar diferentes problemas no sistema de banco de dados relacional. Além disso, vimos como poderíamos usar diferentes tipos de junção em uma única consulta.

  • Autor
  • Postagens recentes
Esat Erkec é um Profissional SQL Server que começou sua carreira há mais de 8 anos como desenvolvedor de software. Ele é um SQL Server Microsoft Certified Solutions Expert.
A maior parte de sua carreira foi focada em Administração e Desenvolvimento de Banco de Dados SQL Server. Seus interesses atuais são em administração de banco de dados e Business Intelligence. Você pode encontrá-lo no LinkedIn.
Veja todas as postagens de Esat Erkec

Postagens mais recentes de Esat Erkec (ver todos)
  • Introdução à programação SQL – 3 de fevereiro de 2021
  • Como ler uma execução plano com todos os detalhes – 28 de janeiro de 2021
  • Visão geral e exemplos da instrução SQL SELECT TOP – 25 de janeiro de 2021

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *