Palavra- chave MySQL CROSS JOIN
Palavra-chave SQL CROSS JOIN
A palavra- CROSS JOIN
chave retorna todos os registros de ambas as tabelas (tabela1 e tabela2).
Sintaxe CROSS JOIN
SELECT column_name(s)
FROM table1
CROSS JOIN table2;
Nota: CROSS JOIN
pode potencialmente retornar conjuntos de resultados muito grandes!
Banco de dados de demonstração
Neste tutorial, usaremos o conhecido banco de dados de exemplo Northwind.
Abaixo está uma seleção da tabela "Clientes":
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
E uma seleção da tabela "Pedidos":
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10308 | 2 | 7 | 1996-09-18 | 3 |
10309 | 37 | 3 | 1996-09-19 | 1 |
10310 | 77 | 8 | 1996-09-20 | 2 |
Exemplo de CROSS JOIN do MySQL
A seguinte instrução SQL seleciona todos os clientes e todos os pedidos:
Exemplo
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders;
Observação: a palavra- CROSS JOIN
chave retorna todos os registros correspondentes de ambas as tabelas, independentemente de a outra tabela corresponder ou não. Portanto, se houver linhas em "Clientes" que não tenham correspondências em "Pedidos" ou se houver linhas em "Pedidos" que não tenham correspondências em "Clientes", essas linhas também serão listadas.
Se você adicionar uma WHERE
cláusula (se tabela1 e tabela2 tiverem um relacionamento), CROSS JOIN
produzirá o mesmo resultado que a INNER JOIN
cláusula:
Exemplo
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders
WHERE Customers.CustomerID=Orders.CustomerID;