Voltar para a lista de artigos Artigos
11 minutos de leitura

O que é CROSS JOIN em SQL?

O que é um CROSS JOIN em SQL e quando você deve usá-lo? Neste artigo, respondemos a essas perguntas e damos alguns exemplos de CROSS JOIN que você pode praticar por conta própria.

Imagine que você está procurando ideias de roupas no seu guarda-roupa, imaginando qual blusa usar com qual calça. Quando pensa na roupa perfeita, você imagina todas as partes de cima e de baixo do seu armário combinadas. Esse cenário é semelhante ao SQL CROSS JOIN; uma tabela contém partes de cima e outra contém partes de baixo, e os dados de ambas as tabelas são combinados para explorar todos os pares possíveis.

Nesse caso, o site CROSS JOIN atua como estilista, gerando todas as combinações possíveis de linhas dos dois conjuntos de dados. Em nossa analogia com o guarda-roupa, uma tabela lista as partes de cima e a outra as de baixo. Ao combinar cada parte de cima com cada parte de baixo, você pode criar uma variedade de combinações de roupas.

Mas como isso afeta a análise de dados e o SQL? CROSS JOINs A combinação de conjuntos de dados, um tipo de SQL JOIN, permite a exploração abrangente dos dados criando todas as combinações possíveis de conjuntos de dados. Isso garante que nenhum relacionamento ou interação em potencial seja ignorado, produzindo uma compreensão mais abrangente das interconexões dos dados.

Por exemplo, como gerente de marketing de uma plataforma de comércio eletrônico, você pode querer fornecer recomendações personalizadas de produtos com base nas preferências do cliente. A união cruzada de conjuntos de dados de produtos e de preferências do cliente produz uma lista abrangente de recomendações personalizadas para cada cliente, melhorando a precisão do marketing e as vendas.

Neste artigo, responderemos a todas as suas perguntas urgentes sobre CROSS JOINs. Além disso, forneceremos exercícios para que você possa praticar por conta própria. Se você é novo no site JOINs e deseja saber mais, confira nosso curso abrangente Cláusulas JOIN em SQL, que inclui mais de 90 exercícios práticos sobre vários tipos de JOIN. Esse curso interativo o ajudará a dominar os JOINs, uma habilidade essencial para a análise de dados.

Noções básicas de CROSS JOIN

Para entender a essência de um SQL CROSS JOIN, vamos dar uma olhada na sintaxe básica:

SELECT *
FROM table1
CROSS JOIN table2;

Detalhamento:

  • SELECT *: Recupera todas as colunas (*) da tabela combinada resultante.
  • FROM table1: Especifica a primeira tabela usada na operação CROSS JOIN.
  • CROSS JOIN: Indica que queremos executar uma operação de junção cruzada.
  • table2: Especifica a segunda tabela envolvida na operação CROSS JOIN.

A sintaxe é semelhante à de qualquer outro SQL JOIN. A exceção é que um CROSS JOIN não exige nenhuma condição de união - ele combina todas as linhas de uma tabela com todas as linhas de outra tabela, independentemente de qualquer condição ou relação específica entre as linhas. Você pode encontrar mais informações sobre isso em É Possível Juntar Tabelas Sem uma Coluna Comum?

Agora vamos ver um exemplo completo usando o cenário mencionado anteriormente do seu guarda-roupa. Para simplificar, imagine que seu guarda-roupa esteja organizado nas duas tabelas abaixo:

Tops

top_itemcolorsize
sweaterredM
shirtblueM
tank_topwhiteS

Bottoms

bottom_itemcolorsize
jeansblueM
skirtblackS
shortsredS

Consulta SQL:

SELECT *
FROM Tops
CROSS JOIN Bottoms;

Saída:

top_itemcolorsizebottom_itemcolorsize
sweaterredMjeansblueM
sweaterredMskirtblackS
sweaterredMshortsredS
shirtblueMjeansblueM
shirtblueMskirtblackS
shirtblueMshortsredS
tank_topwhiteSjeansblueM
tank_topwhiteSskirtblackS
tank_topwhiteSshortsredS

Nesse exemplo simples, o site CROSS JOIN conecta cada tipo de parte superior a cada tipo de parte inferior, permitindo que você veja todas as combinações de roupas em seu guarda-roupa. Esse recurso permite que você planeje seus trajes com mais eficiência ou experimente novas ideias, levando em conta todas as combinações possíveis.

Observe que, como a tabela Tops tem 3 linhas e a tabela Bottoms tem 3 linhas, a tabela resultante tem 9 (3 vezes 3) linhas. Esse princípio de multiplicação se aplica a todas as operações CROSS JOIN. Para obter mais exemplos, consulte nosso Guia ilustrado do SQL CROSS JOIN.

O que é um produto cartesiano?

Um produto cartesiano, um conceito matemático introduzido por René Descartes, é o resultado do emparelhamento de cada elemento de um conjunto com cada elemento de outro. Em essência, é equivalente a criar todas as combinações possíveis de dois ou mais conjuntos, resultando na combinação de elementos de cada um deles.

No SQL, a operação CROSS JOIN fornece o produto cartesiano entre duas tabelas. Ela combina cada linha da primeira tabela com cada linha da segunda tabela, resultando em uma nova tabela na qual cada linha representa uma fusão de elementos de ambas as tabelas. De fato, o site CROSS JOIN orquestra a geração de todas as combinações possíveis de linhas das duas tabelas, resultando no produto cartesiano.

Aplicações práticas: SQL CROSS JOIN em ação

Agora, vamos aplicar o que aprendemos com alguns exemplos de como o CROSS JOIN pode ajudar no gerenciamento de bancos de dados.

Exercício 1: Variantes de produtos

Contexto:

Seu gerente quer expandir as ofertas de produtos da plataforma de comércio eletrônico e oferecer aos clientes uma experiência de compra mais diversificada. Ele lhe forneceu duas tabelas: colors (que contém várias cores) e sizes (que contém tamanhos diferentes) para um produto específico. Sua tarefa é combinar os dados das duas tabelas para gerar variantes de produtos abrangentes que incluam todas as colunas das duas tabelas.

Consulta SQL:

SELECT *
FROM colors
CROSS JOIN sizes;

Resultado da consulta:

Essa consulta retornará todas as colunas das tabelas colors e sizes tabelas. Esse exercício facilita a criação de variantes de produtos, permitindo que os clientes selecionem entre uma variedade de opções. A exibição de todas as combinações possíveis de cores e tamanhos melhora a experiência de compra do cliente e aumenta a probabilidade de ele encontrar a variante de produto desejada.

Exercício 2: Espaços de tempo para compromissos

Contexto:

Sua tarefa no aplicativo de agendamento de compromissos é agendar compromissos com eficiência. Seu gerente lhe forneceu três tabelas:

  • daysA tabela day, que contém os dias disponíveis na coluna .
  • times, que contém todos os horários disponíveis na coluna time.
  • employees, que contém informações sobre os funcionários, incluindo a coluna employee_name.

Sua tarefa é criar intervalos de tempo abrangentes usando essas três tabelas com o dia, a hora e o nome do funcionário.

Consulta SQL:

SELECT 
  days.day, 
  times.time, 
  employees.employee_name
FROM days
CROSS JOIN times
CROSS JOIN employees;

Resultado da consulta:

Essa consulta retornará todas as colunas da tabela days, times, e employees tabelas. Esse exercício ajuda a criar intervalos de tempo abrangentes, levando em conta os dias, horários e funcionários. Ele garante um agendamento eficaz de compromissos, otimiza a alocação de recursos e aprimora o atendimento ao cliente.

Exercício 3: Pacote de produtos para promoção

Contexto:

Em um ambiente de varejo, seu gerente pretende aumentar as vendas promovendo pacotes de produtos atraentes. Você recebeu duas tabelas:

  • office_suppliesproduct_id, que contém as colunas product_name, price e color.
  • electronicsA tabela product_id, que contém as colunas , product_name, price e brand.

O objetivo é criar pacotes de produtos atraentes emparelhando itens dessas tabelas, com o critério adicional de que o preço do material de escritório deve ser inferior a US$ 50. O resultado deve incluir o ID do produto, o nome e o preço de ambas as categorias.

Consulta SQL:

SELECT 
  o.product_id AS office_supplies_id, 
  o.product_name AS office_supplies_name, 
  o.price AS office_supplies_price,
  e.product_id AS electronics_id, 
  e.product_name AS electronics_name, 
  e.price AS electronics_price
FROM office_supplies o
CROSS JOIN electronics e
WHERE o.price < 50;

Resultado da consulta:

Essa consulta retorna um conjunto de resultados com a ID do produto, o nome e o preço de ambas as tabelas, com o critério adicional de que o material de escritório deve ser inferior a US$ 50.

Essa lista abrangente facilita a criação de pacotes de produtos atraentes, combinando itens de diferentes categorias e, ao mesmo tempo, mantendo os materiais de escritório acessíveis. Ela permite que os varejistas ofereçam promoções de pacotes que combinem materiais de escritório e eletrônicos de baixo custo, oferecendo aos clientes uma variedade de soluções práticas. Essa abordagem estratégica reflete as preferências do consumidor e tem o potencial de aumentar significativamente as vendas e a satisfação do cliente.

Exercícios de CROSS JOIN

Nesta seção, forneceremos exercícios interativos que podem ser realizados por você mesmo usando o site CROSS JOINs. Cada exercício vem com seu próprio contexto e tabelas. Tente resolvê-los por conta própria e, em seguida, clique para revelar as soluções. Para obter ajuda, dê uma olhada em nossa Folha de consulta SQL JOIN. Vamos começar:

Exercício 1: Planejamento de refeições

Você gerencia um serviço que oferece aos clientes uma variedade de planos de refeições. Seu objetivo é combinar pratos principais com acompanhamentos adequados para oferecer uma variedade de opções de refeições.

Considerando as tabelas que listam os pratos principais e acompanhamentos disponíveis, seu resultado deve conter todas as combinações possíveis apenas da coluna dish_name da tabela mains e a coluna dish_name da tabela side_dishes da tabela.

mains

dish_iddish_name
101Tofu Curry
102Chicken Curry
103Veggie Stir-fry

side_dishes

dish_iddish_name
201Rice
202Chips

Consulta SQL:

SELECT 
  m.dish_name AS main_dish, 
  s.dish_name AS side_dish
FROM mains m
CROSS JOIN side_dishes s;

Saída:

main_dishside_dish
Tofu CurryRice
Tofu CurryChips
Chicken CurryRice
Chicken CurryChips
Veggie Stir-fryRice
Veggie Stir-fryChips

Usando CROSS JOIN para combinar pratos principais com acompanhamentos apropriados, você pode criar uma ampla gama de opções de refeições. Essa abordagem permite que o serviço de planejamento de refeições ofereça mais combinações aos seus clientes.

Exercício 2: Atribuição de projeto

Como gerente de projeto, você deve atribuir um funcionário a vários projetos com base no status de treinamento dele. Somente os funcionários que receberam treinamento especializado podem ser atribuídos aos projetos.

Você tem duas tabelas, uma listando os projetos disponíveis e a outra com o status de treinamento dos funcionários. Se um funcionário não tiver recebido treinamento, ele não poderá ser atribuído ao projeto. Seu resultado deve incluir o ID do projeto da tabela projects e o ID e o nome do funcionário da tabela employees da tabela.

projects

project_idproject_name
101Project X
102Project Y

employees

employee_idemployee_namereceived_training
201JohnYes
202EmilyNo
203SarahYes

Consulta SQL:

SELECT 
  p.project_id, 
  e.employee_id, 
  e.employee_name
FROM projects p
CROSS JOIN employees e
WHERE e.received_training = 'Yes';

Saída:

project_idemployee_idemployee_name
101201John
101203Sarah
102201John
102203Sarah

Utilizando o site CROSS JOIN e a filtragem apropriada, todas as combinações de projetos e os funcionários com o treinamento necessário são exibidos.

Exercício 3: Recomendações de produtos premium

Como gerente de comércio eletrônico, você deseja recomendar produtos premium aos clientes com status de assinatura Gold e melhorar a experiência de compra deles com ofertas exclusivas.

Você tem duas tabelas, uma para clientes e seus status de assinatura e outra para produtos premium. Seu objetivo é mostrar todas as combinações possíveis de clientes que têm status de assinatura Gold com produtos premium, permitindo recomendações personalizadas. Seu resultado deve incluir uma lista de todas as combinações possíveis de ID do cliente, ID do produto e nome do produto. Você trabalhará com as seguintes tabelas:

customers

customer_idsuscription_status
111Gold
112Silver
113Bronze
114Gold

premium_products

product_idproduct_name
101Diamond Watch
102Platinum Ring

Consulta SQL:

SELECT 
  c.customer_id, 
  p.product_id, 
  p.product_name
FROM customers c
CROSS JOIN premium_products p
WHERE c.suscription_status = 'Gold';

Output:

customer_idproduct_idproduct_name
111101Diamond Watch
111102Platinum Ring
114101Diamond Watch
114102Platinum Ring

Usando CROSS JOIN e filtragem, os clientes com status de assinatura Gold são eficientemente combinados com produtos premium. Isso facilita as recomendações personalizadas, que melhoram a experiência de compra desses clientes valiosos.

Se você gostou desses exercícios práticos, confira nosso artigo SQL Joins: 12 perguntas práticas com respostas detalhadas, onde você encontrará exercícios ainda mais úteis para aprimorar suas habilidades em SQL!

Considerações sobre o desempenho do CROSS JOIN

Ao usar o CROSS JOIN no SQL, é fundamental considerar as implicações de desempenho, especialmente devido ao conjunto de resultados potencialmente maciço gerado por um CROSS JOIN irrestrito. Essa operação gera um produto cartesiano que cresce exponencialmente em proporção ao tamanho das tabelas de entrada. Vamos dar uma olhada em algumas dicas para evitar problemas de desempenho.

  • Limite o tamanho das tabelas de entrada: Antes de executar um CROSS JOIN, refine as tabelas de entrada aplicando os filtros apropriados. Use as cláusulas WHERE ou subconsultas para restringir o conjunto de dados, minimizando assim o número de linhas a serem combinadas.
  • Aplique filtragem adicional: Após o CROSS JOIN, empregue condições de filtragem suplementares para refinar ainda mais o conjunto de resultados. Isso ajuda a reduzir o tamanho do resultado final e a se concentrar somente nos dados pertinentes, melhorando o desempenho da consulta.
  • Considere tipos alternativos de junção: Avalie se um CROSS JOIN irrestrito é realmente indispensável. Dependendo dos requisitos específicos, explore tipos de junção alternativos como INNER JOIN, LEFT JOIN ou RIGHT JOIN, que podem ser mais eficientes e mais adaptados às suas necessidades.
  • Otimize a execução de consultas: Certifique-se de que seu banco de dados esteja otimizado para a execução eficiente de consultas. A implementação de índices, principalmente em colunas de junção, agilizará o desempenho, especialmente ao lidar com conjuntos de dados extensos.

Ao incorporar essas considerações de desempenho para o uso do CROSS JOIN, você pode reduzir a tensão indevida no seu banco de dados e garantir a execução tranquila das consultas, mesmo ao trabalhar com conjuntos de dados extensos.

Deseja saber mais sobre os CROSS JOINs do SQL?

Concluindo, o CROSS JOIN no SQL é uma ferramenta útil para criar conjuntos de dados abrangentes combinando cada linha de uma tabela com cada linha de outra. Ao compreender os fundamentos do CROSS JOIN e considerar suas implicações de desempenho, os analistas podem liberar todo o seu potencial para explorar relacionamentos complexos em conjuntos de dados e extrair insights valiosos.

Para aproveitar totalmente os recursos do CROSS JOIN e de outros tipos de SQL JOIN, a LearnSQL.com.br criou o Cláusulas JOIN em SQL curso. Esse curso interativo inclui exercícios práticos que abrangem vários tipos de JOIN e foi criado para ajudá-lo a entender as complexidades das operações de JOIN.

Você também pode ler outros artigos em nosso blog, como As 10 principais perguntas da entrevista sobre SQL JOIN e como respondê-las. E não se esqueça da nossa prática Folha de consulta SQL JOIN, que está sempre disponível para ajudá-lo em sua exploração do SQL. Então, o que está esperando? Aprimore suas habilidades hoje mesmo!