CROSS JOIN to operator SQL do wykonania pełnego iloczynu kartezjańskiego między dwiema tabelami. Ponieważ jest to produkt kartezjański, nie dopuszcza żadnych warunków podczas operacji , możesz ograniczyć jego wynik tylko za pomocą jakiejś operacji filtrowania (warunek WHERE).
Operatory JOIN (INNER i OUTER JOIN, czyli) są po prostu iloczynem kartezjańskim razem z operatorem filtrującym wyrażonym w części ON operatora (a tak naprawdę w oryginalnej składni SQL nie było operatora JOIN, po prostu „przecinek” notacja oznaczająca produkt z warunkiem połączenia wyrażonym zawsze w części WHERE).
Przykłady:
"stara" notacja:
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute
odpowiednik "nowoczesnej" notacji:
SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute
natomiast dla produktu kartezjańskiego:
"stara" notacja:
SELECT ...
FROM table1 t1, table2 t2
odpowiednik "nowoczesnej" notacji:
SELECT ...
FROM table1 t1 CROSS JOIN table2 t2
Innymi słowy, CROSS JOIN, które wymagają warunku, jest w rzeczywistości jakimś rodzajem INNER JOIN.