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 nomeTabela1CROSS 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_idFROM 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_idFROM 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_idFROM 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 |