Retour à la liste des articles Articles
12 minutes de lecture

Qu'est-ce que le CROSS JOIN en SQL ?

Qu'est-ce qu'un CROSS JOIN en SQL, et quand devriez-vous l'utiliser ? Nous répondons à ces questions - et vous donnons quelques exemples de JOINTS CROISÉS que vous pouvez pratiquer vous-même - dans cet article.

Imaginez que vous cherchiez des idées de tenues dans votre armoire et que vous vous demandiez quel haut porter avec quel bas. Lorsque vous pensez à la tenue parfaite, vous imaginez tous les hauts et les bas de votre garde-robe combinés. Ce scénario est similaire à celui de SQL CROSS JOIN; une table contient les hauts et une autre les bas, et les données des deux tables sont combinées pour explorer toutes les combinaisons possibles.

Dans ce cas, un site CROSS JOIN fait office de styliste et génère toutes les combinaisons possibles de lignes à partir des deux ensembles de données. Dans notre analogie avec la garde-robe, une table répertorie les hauts et l'autre les bas. En associant chaque haut à chaque bas, vous pouvez créer de nombreuses combinaisons de tenues.

Mais comment cela affecte-t-il l'analyse des données et le langage SQL ? CROSS JOINs Les JOIN SQL, un type de JOIN SQL, permettent une exploration complète des données en créant toutes les combinaisons possibles d'ensembles de données. Cela permet de s'assurer qu'aucune relation ou interaction potentielle n'est négligée, ce qui permet de mieux comprendre les interconnexions des données.

Par exemple, en tant que responsable marketing d'une plateforme de commerce électronique, vous souhaitez peut-être fournir des recommandations de produits personnalisées basées sur les préférences des clients. En croisant les ensembles de données sur les produits et les préférences des clients, on obtient une liste complète de recommandations personnalisées pour chaque client, ce qui permet d'améliorer la précision du marketing et les ventes.

Dans cet article, nous répondrons à toutes vos questions brûlantes sur les jointures croisées. Nous vous proposerons également des exercices pour que vous puissiez vous exercer par vous-même. Si vous ne connaissez pas encore JOINs et que vous souhaitez en savoir plus, consultez notre cours complet sur Les jointures en SQL , qui comprend plus de 90 exercices pratiques sur différents types de JOIN. Ce cours interactif vous aidera à maîtriser les JOIN, une compétence essentielle pour l'analyse des données.

Les bases du CROSS JOIN

Pour comprendre l'essence d'un SQL CROSS JOIN, examinons la syntaxe de base :

SELECT *
FROM table1
CROSS JOIN table2;

La décomposition :

  • SELECT *: Récupère toutes les colonnes (*) de la table combinée résultante.
  • FROM table1: Spécifie la première table utilisée dans l'opération CROSS JOIN.
  • CROSS JOIN: Indique que nous voulons effectuer une opération de jointure croisée.
  • table2: Spécifie la deuxième table impliquée dans l'opération CROSS JOIN.

La syntaxe est similaire à celle de tout autre SQL JOIN. L'exception est qu'une CROSS JOIN ne nécessite aucune condition de jointure - elle combine chaque ligne d'une table avec chaque ligne d'une autre table, indépendamment de toute condition ou relation spécifique entre les lignes. Vous trouverez de plus amples informations à ce sujet dans la rubrique Peut-on joindre deux tables sans colonne commune ?

Examinons maintenant un exemple complet en utilisant le scénario de votre garde-robe mentionné précédemment. Pour simplifier, imaginez que votre garde-robe est organisée dans les deux tables ci-dessous :

Tops

top_itemcolorsize
sweaterredM
shirtblueM
tank_topwhiteS

Bottoms

bottom_itemcolorsize
jeansblueM
skirtblackS
shortsredS

Requête SQL :

SELECT *
FROM Tops
CROSS JOIN Bottoms;

Sortie :

top_itemcolorsizebottom_itemcolorsize
sweaterredMjeansblueM
sweaterredMskirtblackS
sweaterredMshortsredS
shirtblueMjeansblueM
shirtblueMskirtblackS
shirtblueMshortsredS
tank_topwhiteSjeansblueM
tank_topwhiteSskirtblackS
tank_topwhiteSshortsredS

Dans cet exemple simple, le site CROSS JOIN relie chaque type de haut à chaque type de bas, ce qui vous permet de voir toutes les combinaisons de tenues de votre garde-robe. Cette fonction vous permet de planifier plus efficacement vos tenues ou d'expérimenter de nouvelles idées en tenant compte de toutes les combinaisons possibles.

Remarquez que, puisque le tableau Tops comporte 3 lignes et que le tableau Bottoms a 3 lignes, le tableau résultant a 9 (3 fois 3) lignes. Ce principe de multiplication s'applique à toutes les opérations de CROSS JOIN. Pour plus d'exemples, consultez notre Guide illustré du CROSS JOIN SQL.

Qu'est-ce qu'un produit cartésien ?

Un produit cartésien, concept mathématique introduit par René Descartes, est le résultat de l'appariement de chaque élément d'un ensemble avec chaque élément d'un autre ensemble. Par essence, cela revient à créer toutes les combinaisons possibles de deux ou plusieurs ensembles, en combinant les éléments de chacun d'entre eux.

En SQL, l'opération CROSS JOIN fournit le produit cartésien entre deux tables. Elle combine chaque ligne de la première table avec chaque ligne de la seconde, ce qui donne une nouvelle table dans laquelle chaque ligne représente une fusion d'éléments des deux tables. En fait, CROSS JOIN orchestre la génération de toutes les combinaisons possibles de lignes des deux tables, ce qui permet d'obtenir le produit cartésien.

Applications pratiques : La jointure croisée SQL en action

Mettons maintenant en pratique ce que nous avons appris en donnant quelques exemples de la manière dont CROSS JOIN peut contribuer à la gestion des bases de données.

Exercice 1 : Variantes de produits

Contexte :

Votre responsable souhaite élargir l'offre de produits de la plateforme de commerce électronique et offrir aux clients une expérience d'achat plus diversifiée. Il vous a donné deux tables : colors (qui contient différentes couleurs) et sizes (qui contient différentes tailles) pour un produit spécifique. Votre tâche consiste à combiner les données des deux tables pour générer des variantes de produits complètes qui incluent toutes les colonnes des deux tables.

Requête SQL :

SELECT *
FROM colors
CROSS JOIN sizes;

Résultat de la requête :

Cette requête renvoie toutes les colonnes des tables colors et sizes et de la table. Cet exercice facilite la création de variantes de produits, permettant aux clients de choisir parmi une variété d'options. L'affichage de toutes les combinaisons possibles de couleurs et de tailles améliore l'expérience d'achat du client et augmente la probabilité qu'il trouve la variante de produit souhaitée.

Exercice 2 : plages horaires de rendez-vous

Contexte :

Votre tâche dans l'application de prise de rendez-vous est de planifier efficacement les rendez-vous. Votre responsable vous a remis trois tableaux :

  • days, qui contient les jours disponibles dans la colonne day.
  • times, qui contient toutes les heures disponibles dans la colonne time.
  • employees, qui contient les informations sur les employés, y compris la colonne employee_name.

Votre tâche consiste à créer des plages horaires complètes en utilisant ces trois tables avec le jour, l'heure et le nom de l'employé.

Requête SQL :

SELECT 
  days.day, 
  times.time, 
  employees.employee_name
FROM days
CROSS JOIN times
CROSS JOIN employees;

Résultat de la requête :

Cette requête renvoie toutes les colonnes de la table days, times, et employees . Cet exercice permet de créer des plages horaires complètes en tenant compte des jours, des heures et des employés. Il permet de planifier efficacement les rendez-vous, d'optimiser l'affectation des ressources et d'améliorer le service à la clientèle.

Exercice 3 : regroupement de produits en vue d'une promotion

Contexte :

Dans un établissement de vente au détail, votre directeur cherche à stimuler les ventes en promouvant des offres groupées de produits attrayants. Vous disposez de deux tableaux :

  • office_supplies, qui contient les colonnes product_id, product_name, price, et color.
  • electronics, qui contient les colonnes product_id, product_name, price, et brand.

L'objectif est de créer des offres groupées attrayantes en associant des articles de ces tables, avec le critère supplémentaire que le prix des fournitures de bureau doit être inférieur à 50 $. Le résultat doit inclure l'ID, le nom et le prix du produit pour les deux catégories.

Requête SQL :

SELECT 
  o.product_id AS office_supplies_id, 
  o.product_name AS office_supplies_name, 
  o.price AS office_supplies_price,
  e.product_id AS electronics_id, 
  e.product_name AS electronics_name, 
  e.price AS electronics_price
FROM office_supplies o
CROSS JOIN electronics e
WHERE o.price < 50;

Résultat de la requête :

Cette requête renvoie un ensemble de résultats contenant l'ID du produit, le nom et le prix des deux tables, avec le critère supplémentaire que les fournitures de bureau doivent être inférieures à 50 $.

Cette liste complète facilite la création d'offres groupées attrayantes en combinant des articles de différentes catégories, tout en maintenant les fournitures de bureau à un prix abordable. Elle permet aux détaillants de proposer des promotions groupées qui combinent des fournitures de bureau et des appareils électroniques à bas prix, offrant ainsi aux clients une variété de solutions pratiques. Cette approche stratégique reflète les préférences des consommateurs et peut accroître considérablement les ventes et la satisfaction des clients.

Exercices CROSS JOIN

Dans cette section, nous vous proposons des exercices interactifs que vous pouvez réaliser vous-même à l'aide de CROSS JOINs. Chaque exercice est accompagné de son propre contexte et de ses propres tableaux. Essayez de les résoudre par vous-même, puis cliquez pour révéler les solutions. Vous pouvez consulter l'aide-mémoire SQL JOIN pour obtenir de l'aide. Commençons :

Exercice 1 : planification des repas

Vous gérez un service qui fournit aux clients une variété de plans de repas. Votre objectif est d'associer des plats principaux à des accompagnements appropriés afin d'offrir une variété de choix de repas.

Étant donné les tableaux répertoriant les plats principaux et les accompagnements disponibles, votre résultat doit contenir toutes les combinaisons possibles de la colonne dish_name du tableau mains et la colonne dish_name du tableau side_dishes de la table.

mains

dish_iddish_name
101Tofu Curry
102Chicken Curry
103Veggie Stir-fry

side_dishes

dish_iddish_name
201Rice
202Chips

Requête SQL :

SELECT 
  m.dish_name AS main_dish, 
  s.dish_name AS side_dish
FROM mains m
CROSS JOIN side_dishes s;

Résultat :

main_dishside_dish
Tofu CurryRice
Tofu CurryChips
Chicken CurryRice
Chicken CurryChips
Veggie Stir-fryRice
Veggie Stir-fryChips

En utilisant CROSS JOIN pour combiner les plats principaux avec les accompagnements appropriés, vous pouvez créer un large éventail d'options de repas. Cette approche permet au service de planification des repas de proposer davantage de combinaisons à ses clients.

Exercice 2 : Attribution du projet

En tant que chef de projet, vous devez affecter un employé à différents projets en fonction de son statut de formation. Seuls les employés ayant reçu une formation spécialisée peuvent être affectés aux projets.

Vous disposez de deux tableaux, l'un répertoriant les projets disponibles et l'autre le statut de formation des employés. Si un employé n'a pas reçu de formation, il ne peut pas être affecté au projet. Votre résultat doit inclure l'identifiant du projet dans le tableau projects et l'ID et le nom de l'employé dans le tableau employees de la table.

projects

project_idproject_name
101Project X
102Project Y

employees

employee_idemployee_namereceived_training
201JohnYes
202EmilyNo
203SarahYes

Requête SQL :

SELECT 
  p.project_id, 
  e.employee_id, 
  e.employee_name
FROM projects p
CROSS JOIN employees e
WHERE e.received_training = 'Yes';

Résultat :

project_idemployee_idemployee_name
101201John
101203Sarah
102201John
102203Sarah

En utilisant CROSS JOIN et un filtrage approprié, toutes les combinaisons de projets et les employés ayant la formation nécessaire sont affichés.

Exercice 3 : recommandations de produits haut de gamme

En tant que responsable du commerce électronique, vous souhaitez recommander des produits haut de gamme aux clients ayant un statut d'abonnement Gold et améliorer leur expérience d'achat grâce à des offres exclusives.

Vous disposez de deux tableaux, l'un pour les clients et leurs statuts d'abonnement et l'autre pour les produits haut de gamme. Votre objectif est d'afficher toutes les combinaisons possibles de clients ayant un statut d'abonnement Gold avec des produits premium, afin de permettre des recommandations personnalisées. Votre résultat doit inclure une liste de toutes les combinaisons possibles d'identifiant de client, d'identifiant de produit et de nom de produit. Vous travaillerez avec les tables suivantes :

customers

customer_idsuscription_status
111Gold
112Silver
113Bronze
114Gold

premium_products

product_idproduct_name
101Diamond Watch
102Platinum Ring

Requête SQL :

SELECT 
  c.customer_id, 
  p.product_id, 
  p.product_name
FROM customers c
CROSS JOIN premium_products p
WHERE c.suscription_status = 'Gold';

Résultat :

customer_idproduct_idproduct_name
111101Diamond Watch
111102Platinum Ring
114101Diamond Watch
114102Platinum Ring

Grâce à CROSS JOIN et au filtrage, les clients ayant souscrit un abonnement Gold sont efficacement associés à des produits haut de gamme. Cela facilite les recommandations personnalisées, ce qui améliore l'expérience d'achat de ces clients.

Si vous avez apprécié ces exercices d'entraînement, n'hésitez pas à consulter notre article Jointures SQL : 12 questions pratiques avec des réponses détaillées, où vous trouverez encore plus d'exercices utiles pour améliorer vos compétences en SQL !

Considérations sur les performances pour les jointures croisées

Lors de l'utilisation de CROSS JOIN en SQL, il est essentiel de prendre en compte les implications en termes de performances, en particulier compte tenu de l'ensemble de résultats potentiellement volumineux généré par une jointure non restreinte CROSS JOIN. Cette opération produit un produit cartésien qui croît de manière exponentielle proportionnellement à la taille des tables d'entrée. Examinons quelques conseils pour éviter les problèmes de performance.

  • Limitez la taille des tables d'entrée: Avant d'exécuter une requête CROSS JOIN, affinez les tables d'entrée en appliquant les filtres appropriés. Utilisez les clauses WHERE ou les sous-requêtes pour restreindre l'ensemble des données et minimiser ainsi le nombre de lignes à combiner.
  • Appliquez un filtrage supplémentaire: Après CROSS JOIN, utilisez des conditions de filtrage supplémentaires pour affiner davantage l'ensemble des résultats. Cela permet de réduire la taille du résultat final et de se concentrer uniquement sur les données pertinentes, ce qui améliore les performances de la requête.
  • Envisager d'autres types de jointure: Évaluez si une adresse CROSS JOIN sans restriction est vraiment indispensable. En fonction de vos besoins spécifiques, envisagez d'autres types de jointure comme INNER JOIN, LEFT JOIN, ou RIGHT JOIN, qui peuvent être plus efficaces et mieux adaptés à vos besoins.
  • Optimiser l'exécution des requêtes: Veillez à ce que votre base de données soit optimisée pour une exécution efficace des requêtes. La mise en œuvre d'index, en particulier sur les colonnes de jointure, accélérera les performances, notamment lors du traitement de vastes ensembles de données.

En intégrant ces considérations de performance pour l'utilisation de CROSS JOIN, vous pouvez atténuer les contraintes excessives sur votre base de données et assurer l'exécution fluide des requêtes, même lorsque vous travaillez avec des ensembles de données volumineux.

Vous voulez en savoir plus sur les JOINTS CROISÉS SQL ?

En conclusion, CROSS JOIN en SQL est un outil utile pour créer des ensembles de données complets en combinant chaque ligne d'une table avec chaque ligne d'une autre table. En comprenant les principes fondamentaux de CROSS JOIN et en tenant compte de ses implications en termes de performances, les analystes peuvent exploiter tout son potentiel pour explorer les relations complexes au sein des ensembles de données et en extraire des informations précieuses.

Pour tirer pleinement parti des capacités de CROSS JOIN et d'autres types SQL JOIN, LearnSQL.fr a créé le cours Les jointures en SQL cours. Ce cours interactif comprend des exercices pratiques couvrant différents types de JOIN et est conçu pour vous aider à comprendre les complexités des opérations de JOIN.

Vous pouvez également lire d'autres articles sur notre blog, tels que Les 10 meilleures questions d'entretien SQL JOIN et comment y répondre. Et n'oubliez pas notre aide-mémoire SQL JOIN, qui est toujours disponible pour vous aider dans votre exploration de SQL. Alors, qu'attendez-vous ? Améliorez vos compétences dès aujourd'hui !