CROSS JOIN est l'opérateur SQL pour effectuer un produit cartésien complet entre deux tables. Comme il s'agit d'un produit cartésien, il n'autorise aucune condition pendant l'opération , vous ne pouvez restreindre son résultat qu'avec une opération de filtrage (la condition WHERE).
Les opérateurs JOIN (INNER et OUTER JOIN, c'est-à-dire) sont simplement un produit cartésien avec l'opérateur de filtrage exprimé dans la partie ON de l'opérateur (et en fait, dans la syntaxe originale de SQL, il n'y avait pas d'opérateur JOIN, simplement la "virgule" notation pour désigner le produit avec la condition de jointure exprimée toujours dans la partie WHERE).
Exemples :
notation "ancienne" :
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute
équivalent à la notation "moderne" :
SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute
tandis que, pour le produit cartésien :
notation "ancienne" :
SELECT ...
FROM table1 t1, table2 t2
équivalent à la notation "moderne" :
SELECT ...
FROM table1 t1 CROSS JOIN table2 t2
En d'autres termes, un CROSS JOIN qui nécessite une condition est en fait une sorte de INNER JOIN.