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.
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é
Les données présentes dans la table Département de SQL Server sont :
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
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 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.
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
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 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'
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'
.