Mot-clé MySQL CROSS JOIN
Mot-clé SQL CROSS JOIN
Le CROSS JOIN
mot clé renvoie tous les enregistrements des deux tables (table1 et table2).
Syntaxe CROSS JOIN
SELECT column_name(s)
FROM table1
CROSS JOIN table2;
Remarque : CROSS JOIN
peut potentiellement renvoyer des ensembles de résultats très volumineux !
Base de données de démonstration
Dans ce didacticiel, nous utiliserons la célèbre base de données d'exemples Northwind.
Voici une sélection du tableau "Clients":
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 |
Et une sélection du tableau "Commandes":
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 |
MySQL CROSS JOIN Exemple
L'instruction SQL suivante sélectionne tous les clients et toutes les commandes :
Exemple
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders;
Remarque : Le mot- CROSS JOIN
clé renvoie tous les enregistrements correspondants des deux tables, que l'autre table corresponde ou non. Ainsi, s'il y a des lignes dans "Clients" qui n'ont pas de correspondance dans "Commandes", ou s'il y a des lignes dans "Commandes" qui n'ont pas de correspondance dans "Clients", ces lignes seront également répertoriées.
Si vous ajoutez une WHERE
clause (si table1 et table2 ont une relation), le CROSS JOIN
produit le même résultat que la INNER JOIN
clause :
Exemple
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders
WHERE Customers.CustomerID=Orders.CustomerID;