CROSS JOIN е SQL операторът за извършване на пълен декартов продукт между две таблици. Тъй като е декартов продукт, той не позволява никакви условияпо време на операцията , можете само да ограничите неговия резултат с някаква филтрираща операция (условието WHERE).
Операторите JOIN (INNER и OUTER JOIN, т.е.) са просто декартово произведение заедно с оператора за филтриране, изразен в частта ON на оператора (и всъщност в оригиналния синтаксис на SQL нямаше JOIN оператор, просто „запетая“ нотация за обозначаване на продукта с условието за свързване, изразено винаги в частта WHERE).
Примери:
"стара" нотация:
SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute
еквивалентно на „модерната“ нотация:
SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute
докато за декартовия продукт:
"стара" нотация:
SELECT ...
FROM table1 t1, table2 t2
еквивалентно на „модерната“ нотация:
SELECT ...
FROM table1 t1 CROSS JOIN table2 t2
С други думи, CROSS JOIN, който изисква условие, всъщност е някакъв вид INNER JOIN.