O comando CROSS JOIN é utilizado para realizar o produto cartesiano entre duas tabelas.
Isso significa que cada registro da primeira tabela será combinado com todos os registros da segunda tabela.
Se uma tabela possui 3 registros e outra possui 4 registros, o resultado terá:
3 x 4 = 12 registros
Cada linha da primeira tabela será combinada com todas as linhas da segunda tabela.
SELECT *
FROM tabela1
CROSS JOIN tabela2;
CORES
+-------+
| Cor |
+-------+
| Azul |
| Verde |
+-------+
TAMANHOS
+---------+
| Tamanho |
+---------+
| P |
| M |
| G |
+---------+
SELECT *
FROM cores
CROSS JOIN tamanhos;
Resultado:
Azul - P
Azul - M
Azul - G
Verde - P
Verde - M
Verde - G
SELECT
cores.cor,
tamanhos.tamanho
FROM cores
CROSS JOIN tamanhos;
| CROSS JOIN | INNER JOIN |
|---|---|
| Combina todos os registros | Combina registros relacionados |
| Não utiliza condição ON | Utiliza condição ON |
| Pode gerar muitos dados | Retorna dados específicos |
SELECT
produto,
cor,
tamanho
FROM produtos
CROSS JOIN cores
CROSS JOIN tamanhos;
Cria combinações possíveis de produtos, cores e tamanhos.
| Cuidado | Motivo |
|---|---|
| Muitas linhas | Pode gerar milhões de registros |
| Baixo desempenho | Consultas podem ficar lentas |
| Uso inadequado | Pode indicar erro de modelagem |
| Erro | Problema |
|---|---|
| Usar sem necessidade | Excesso de dados |
| Confundir com INNER JOIN | Resultado diferente do esperado |
| Ignorar tamanho das tabelas | Problemas de desempenho |