logo

JOINTURE CROISÉE MySQL

MySQL CROSS JOIN est utilisé pour combiner toutes les possibilités de deux ou plusieurs tables et renvoie le résultat qui contient chaque ligne de toutes les tables contributives. Le CROSS JOIN est également connu sous le nom de CARTESIAN JOIN, qui fournit le produit cartésien de toutes les tables associées. Le produit cartésien peut être expliqué comme toutes les lignes présentes dans le premier tableau multipliées par toutes les lignes présentes dans le deuxième tableau. C'est similaire à Inner Join, où la condition de jointure n'est pas disponible avec cette clause.

CSS pour le retour à la ligne du texte

Nous pouvons le comprendre avec la représentation visuelle suivante où CROSS JOIN renvoie tous les enregistrements de la table1 et de la table2, et chaque ligne est la combinaison des lignes des deux tables.

JOINTURE CROISÉE MySQL

Syntaxe MySQL CROSS JOIN

Le mot clé CROSS JOIN est toujours utilisé avec l'instruction SELECT et doit être écrit après la clause FROM. La syntaxe suivante récupère tous les enregistrements des deux tables de jointure :

 SELECT column-lists FROM table1 CROSS JOIN table2; 

Dans la syntaxe ci-dessus, les listes de colonnes sont le nom de la colonne ou du champ que vous souhaitez renvoyer et table1 et table2 sont le nom de la table à partir de laquelle vous récupérez les enregistrements.

Exemple de jointure croisée MySQL

Prenons quelques exemples pour comprendre le fonctionnement de la clause Left Join ou Left Outer Join :

Clause CROSS JOIN pour joindre deux tables

Ici, nous allons créer deux tableaux 'clients' et 'Contacts' qui contient les données suivantes :

Tableau : clients

JOINTURE CROISÉE MySQL

Tableau : contacts

comment afficher une application dans Android
JOINTURE CROISÉE MySQL

Pour récupérer tous les enregistrements des deux tables, exécutez la requête suivante :

 SELECT * FROM customers CROSS JOIN contacts; 

Après une exécution réussie de la requête, elle donnera le résultat suivant :

JOINTURE CROISÉE MySQL

Lorsque l'instruction CROSS JOIN est exécutée, vous remarquerez qu'elle affiche 42 lignes. Cela signifie que sept lignes de la table des clients sont multipliées par les six lignes de la table des contacts.

REMARQUE : Pour éviter le résultat de colonnes répétées deux fois, il est recommandé d'utiliser des noms de colonnes individuels au lieu de l'instruction SELECT *.

Problème de colonnes ambiguës dans MySQL CROSS JOIN

Parfois, nous devons récupérer les enregistrements de colonnes sélectionnés à partir de plusieurs tables. Ces tableaux peuvent contenir des noms de colonnes similaires. Dans ce cas, l'instruction MySQL CROSS JOIN renvoie une erreur : le nom de la colonne est ambigu. Cela signifie que le nom de la colonne est présent dans les deux tables et que MySQL ne sait pas quelle colonne vous souhaitez afficher. Les exemples suivants l’expliquent plus clairement :

générateur de jetons de chaîne Java
 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

Le CROSS JOIN ci-dessus génère une erreur comme indiqué dans l'image ci-dessous :

JOINTURE CROISÉE MySQL

Ce problème peut être résolu en utilisant le nom de la table avant le nom de la colonne. La requête ci-dessus peut être réécrite comme suit :

Amisha Patel
 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

Après avoir exécuté la requête ci-dessus, nous obtiendrons le résultat suivant :

JOINTURE CROISÉE MySQL

LEFT JOIN avec la clause WHERE

La clause WHERE est utilisée pour renvoyer le filtre résultat du tableau. L'exemple suivant illustre cela avec la clause CROSS JOIN :

 SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price&gt;1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named &apos; <strong>customers&apos;</strong> and &apos; <strong>orders&apos;</strong> . Let us create one more table and name it as &apos; <strong>contacts&apos; that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>

Après une exécution réussie de la requête ci-dessus, le résultat suivant sera généré :

JOINTURE CROISÉE MySQL