37. CROSS JOIN
Escrito por Uianes Luiz Rockenbach Biondo.
Última atualização em 04 out. 2023
Ú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 cCROSS 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 cCROSS JOIN pedido
AS pWHERE 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 cINNER JOIN pedido
AS pON c.cliente_id = p.cliente_id;
Resultado:
cliente_nome | pedido_id |
Uianes | 4 |
José | 2 |
Bruno | 1 |
Saulo | 3 |