Описание тега cross-join
CROSS JOIN - это операция соединения, которая возвращает декартово произведение строк из таблиц в соединении. Другими словами, он будет создавать строки, которые объединяют каждую строку из первой таблицы с каждой строкой из второй таблицы. В отличие от других операторов JOIN, он не позволяет указывать предложение соединения. Однако вы можете указать предложение WHERE в операторе SELECT.
CROSS JOIN - это операция JOIN, которая производит декартово произведение двух таблиц. В отличие от других операторов JOIN, он не позволяет указывать предложение соединения. Однако вы можете указать предложение WHERE в операторе SELECT.
Примеры
Следующие операторы SELECT эквивалентны:
SELECT *
FROM TEACHER
CROSS JOIN COURSE
SELECT *
FROM TEACHER, COURSE;
Следующие операторы SELECT эквивалентны:
SELECT *
FROM TEACHER
CROSS JOIN COURSE
WHERE TEACHER.ID = COURSE.TEACHER_ID
SELECT *
FROM TEACHER
INNER JOIN COURSE
ON TEACHER.ID = COURSE.TEACHER_ID
Операцию CROSS JOIN можно заменить операцией INNER JOIN, в которой предложение соединения всегда принимает значение true (например, 1=1). Его также можно заменить подзапросом. Таким образом, эквивалентные запросы будут такими:
SELECT * FROM TEACHER LEFT OUTER JOIN
COURSE INNER JOIN UNIVERSITY ON 1=1
ON TEACHER.ID = UNIVERSITIES.TEACHER_ID
WHERE UNIVERSITY.COUNTRY = 'US'
SELECT FROM TEACHER LEFT OUTER JOIN
(SELECT FROM COURSE, UNIVERSITY) S
ON TEACHER.ID = S.TEACHER_ID
WHERE S.COUNTRY = 'US'
Ссылки