Articles

SQL CROSS JOIN

Posted on

La jointure croisée SQL renvoie le produit cartésien des deux tables. Le produit cartésien signifie Nombre de rangs présents dans la table 1 multiplié par Nombre de rangs présents dans la table 2. La jointure croisée du serveur SQL ne nécessite aucune colonne commune pour joindre deux tables. Voyons la représentation visuelle de la jointure croisée pour mieux comprendre.

SQL CROSS JOIN Chart

D’après la capture d’écran ci-dessus, vous pouvez facilement comprendre que la jointure croisée de SQL Server affiche le produit cartésien de deux tables. Cela signifie que chaque enregistrement de la table A se combine avec chaque enregistrement de la table B

SQL Cross Join Syntax

La syntaxe du Cross Join en SQL Server est

-- SQL Server Cross Join SyntaxSELECT Table1.Column(s), Table2.Column(s),FROM Table1 CROSS JOIN Table2 --OR We can Simply Write it asSELECT Table1. Column(s), Table2. Column(s),FROM Table1, Table2 

Pour cet exemple de Cross Join en SQL Server, nous utilisons deux tables (Employee et Department). Données présentes dans la table Employé

Exemple de CROSS JOIN SQL Server

Les données présentes dans la table Département de SQL Server sont :

SQL CROSS JOIN

SQL Cross Join Select * Example

La requête Cross Join suivante affichera toutes les colonnes existantes dans un employé & Tables de département

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT * FROM CROSS JOIN ;

Si vous observez la capture d’écran Join ci-dessous, elle affiche 120 enregistrements. Cela signifie que 15 lignes de l’employé sont multipliées par 8 lignes dans la table Département

SQL CROSS JOIN 3

NOTE : Je vous suggère de sélectionner des noms de colonnes individuels. Veuillez éviter l’instruction SELECT * dans la jointure croisée pour éviter les colonnes indésirables comme id, DeptID, id, etc.

Exemple de jointure croisée SQL Sélectionner quelques colonnes

Comme nous l’avons dit précédemment, veuillez sélectionner les colonnes requises après l’instruction SELECT pour éviter les colonnes indésirables. La requête de jointure croisée suivante affichera le produit cartésien des colonnes présentes dans les tables Employé et Département.

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT , ,FROM CROSS JOIN 
SQL CROSS JOIN 4

SQL Cross Join Colonnes ambiguës

La requête Transact ci-dessus fonctionnera parfaitement si les noms des colonnes des deux tables (Employé et Département) sont différents comme ci-dessus. Que se passe-t-il s’ils avaient les mêmes noms de colonnes dans les deux tables ? Eh bien, avec l’approche spécifiée ci-dessus, vous vous retrouverez avec une erreur.

Laissez-moi vous montrer un exemple pratique. Nous avons ajouté id de la table département comme colonne supplémentaire à la requête ci-dessus.

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT , ,id ,FROM CROSS JOIN 

Comme vous le voyez, cela jette une erreur : Nom de colonne id ambigu. C’est parce que la colonne id est présente à la fois dans la table Employee et dans la table department. Et SQL Server ne sait pas quelle colonne vous lui demandez de récupérer.

SQL CROSS JOIN 5

Pour résoudre ce genre de problèmes, vous devez toujours utiliser le nom de la table avant celui de la colonne. La requête de jointure croisée suivante utilise le nom de la table ALIAS avant les noms des colonnes. Par cette approche, nous pouvons informer le Serveur que nous recherchons la colonne id appartenant à la table département.

Nous pouvons écrire la requête de jointure croisée ci-dessus comme :

-- SQL Server Cross Join ExampleSELECT Emp. ,Emp. ,Dept.id ,Dept.FROM AS EmpCROSS JOIN AS Dept
SQL CROSS JOIN 6

Cross Join sans le mot clé Join

Vous pouvez également éviter le mot clé CROSS JOIN pour obtenir le résultat.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp,CROSS JOIN AS Dept--OR We Can simply Write it asSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS Dept
SQL CROSS JOIN 1

SQL Clause Where de la jointure croisée

Nous pouvons utiliser la clause Where avec la jointure croisée pour restreindre le nombre de lignes retournées par la jointure croisée. Ici, nous utilisons cette clause WHERE avec la jointure croisée.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS DeptWHERE Dept. = 'Software Developer'
SQL CROSS JOIN 2

Cross Join Order By Clause Example

. Join Order By Clause Exemple

La jointure croisée nous permet d’utiliser la clause Order By pour réorganiser l’ordre des enregistrements.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS DeptWHERE Dept. = 'Software Developer'
SQL CROSS JOIN 7

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *