Un CROSS JOIN dans PostgreSQL combine chaque ligne d’une table avec chaque ligne d’une autre table, ce qui crée un produit cartésien. C’est pratique pour générer des combinaisons, créer des données de test ou associer les éléments de deux jeux de données.
🔖 Référence rapide : besoin de retrouver vite tous les types de JOIN ? Jette un œil à notre aide-mémoire SQL JOIN avec des schémas visuels et des exemples de code.
Syntaxe de base
SELECT column1, column2
FROM table1
CROSS JOIN table2;
Tu peux aussi utiliser la syntaxe implicite :
SELECT column1, column2
FROM table1, table2;
Exemple : combinaisons de produits et de couleurs
Prenons deux tables simples, products et colors, pour montrer comment fonctionne un CROSS JOIN.
Table products :
| product_id | product_name |
|---|---|
| 1 | T-shirt |
| 2 | Jean |
Table colors :
| color_id | color_name |
|---|---|
| 1 | Rouge |
| 2 | Bleu |
Pour générer toutes les combinaisons possibles de produits et de couleurs :
SELECT product_name, color_name
FROM products
CROSS JOIN colors;
Résultat attendu :
| product_name | color_name |
|---|---|
| T-shirt | Rouge |
| T-shirt | Bleu |
| Jean | Rouge |
| Jean | Bleu |
Le CROSS JOIN combine chaque produit avec chaque couleur, soit au total 2 produits × 2 couleurs = 4 combinaisons.
Cas d’usage courants
Générer toutes les combinaisons : crée des variantes de produits en combinant tailles et couleurs :
SELECT size, color
FROM sizes CROSS JOIN colors;
Créer des données de test : génère des données d’exemple en combinant différents paramètres :
SELECT strategy, scenario
FROM strategies CROSS JOIN scenarios;
Modèles de rapports : crée des lignes vides pour toutes les combinaisons possibles dans tes rapports.
Points importants
Performance: CROSS JOIN can generate very large result sets. A table with 1,000 rows crossed with another 1,000-row table produces 1,000,000 rows.
Filtrage : utilise des clauses WHERE pour limiter les résultats :
SELECT product_name, color_name
FROM products CROSS JOIN colors
WHERE product_name = 'T-Shirt';
Conclusion
Le CROSS JOIN est utile pour générer des combinaisons et des données de test, mais utilise-le avec prudence sur de grandes tables pour éviter les problèmes de performances. Pense toujours à la taille de ton jeu de résultats avant de lancer la requête.
Beekeeper Studio est une interface de base de données gratuite & open source
Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.
Ce que les utilisateurs disent de Beekeeper Studio
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
« J’ai essayé beaucoup d’interfaces de bases de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »