Connexion croisée (CROSS JOIN)

Une connexion croisée ou un produit cartésien. Chaque ligne du tableau de gauche est connectée à chaque ligne du tableau de droite.

Syntaxe
<cross-join> ::= {CROSS JOIN | , } <source>

Notez que la syntaxe à base de virgules est obsolète. Elle n'est prise en charge que pour maintenir le fonctionnement des codes existants et pourrait être supprimée dans les futures versions.

Réunir deux ensembles est équivalent à les joindre par une condition de tautologie (une condition qui est toujours vraie).

Les deux requêtes suivantes donnent le même résultat :

SELECT *
FROM TA
CROSS JOIN TB;

SELECT *
FROM TA
JOIN TB ON 1 = 1;

Les connexions croisées sont des connexions internes parce qu'elles sélectionnent les lignes pour lesquelles il y a une correspondance - toutes les lignes correspondent ! Les connexions croisées externes, si elles existaient, n'ajouteraient rien au résultat, car les connexions externes ajoutent des entrées pour lesquelles il n'y a pas de correspondance, et elles n'existent pas dans une connexion croisée.

Les connexions croisées sont rarement utiles, sauf si vous souhaitez obtenir une liste de toutes les combinaisons possibles de deux variables ou plus. Supposons que vous vendiez un produit qui existe en différentes tailles, couleurs et matières. Si les valeurs de chaque variable sont répertoriées dans sa propre table, cette requête renverra toutes les combinaisons :

SELECT
    m.name,
    s.size,
    c.name
FROM materials m
CROSS JOIN sizes s
CROSS JOIN colors c