37. CROSS JOIN

Escrito por Uianes Luiz Rockenbach Biondo.
Última atualização em 04 out. 2023

CROSS JOIN → Retorna todos os registros em das duas tabelas.

Sintaxe:

SELECT coluna1, coluna2, ...
FROM nomeTabela1
CROSS JOIN nomeTabela2;

Cuidado! Um CROSS JOIN pode retornar MUITOS registros. Pois cada registro de uma tabela será relacionado com os registros de outra tabela.

Exemplo:

CROSS JOIN entre o nome de um cliente e o id dos pedidos.

SELECT c.cliente_nome, p.pedido_id
FROM cliente AS c
CROSS JOIN pedido AS p;

Resultado:

cliente_nome pedido_id
Uianes 4
Uianes 2
Uianes 1
Uianes 3
Ana 4
Ana 2
Ana 1
Ana 3
José 4
José 2
José 1
José 3
Bruno 4
Bruno 2
Bruno 1
Bruno 3
Saulo 4
Saulo 2
Saulo 1
Saulo 3

Perceba que nem todos os clientes realmente fizeram os pedidos que aparecem no resultado. Isso ocorre porque o CROSS JOIN retorna todos os registros, tendo relação ou não. Caso você adicione a cláusula WHERE, o CROSS JOIN torna-se um INNER JOIN.

SELECT c.cliente_nome, p.pedido_id
FROM cliente AS c
CROSS JOIN pedido AS p
WHERE c.cliente_id = p.cliente_id;

Resultado:

cliente_nome pedido_id
Uianes 4
José 2
Bruno 1
Saulo 3

E se executarmos um INNER JOIN, o resultado será o mesmo:

SELECT c.cliente_nome, p.pedido_id
FROM cliente AS c
INNER JOIN pedido AS p
ON c.cliente_id = p.cliente_id;

Resultado:

cliente_nome pedido_id
Uianes 4
José 2
Bruno 1
Saulo 3