Я всегда думал о Соединении в SQL как некоторая связь между двумя таблицами.
Например,
select e.name, d.name from employees e, departments d
where employees.deptID = departments.deptID
В этом случае это связывает две таблицы, чтобы показать каждому сотруднику с названием отдела вместо идентификатора отдела. И отчасти как "связь" или "Объединение" боком".
Но после приобретения знаний о внутреннем объединении по сравнению с внешним объединением это показывает, что Соединение (Внутреннее объединение) является на самом деле пересечением.
Например, когда одна таблица имеет идентификатор 1, 2, 7, 8, в то время как другая таблица имеет идентификатор 7 и 8 только, способ, которым мы получаем пересечение:
select * from t1, t2 where t1.ID = t2.ID
получить две записи "7 и 8". Таким образом, это - на самом деле пересечение.
Таким образом, у нас есть "Пересечение" 2 таблиц. Сравните это с операцией "Объединения" на 2 таблицах. Соединение может считаться "Пересечением"? Но что относительно "соединения" или "поперечного объединения" аспект его?
Соединение "ссылки" или э-э ... объединяет строки из двух таблиц. Я думаю, что это то, что вы подразумеваете под «боковым союзом», хотя я лично считаю, что это ужасный способ выразить это словами. Но есть разные типы объединений, которые делают несколько разные вещи:
Эта страница в блоге Джеффа Этвуда описывает другие возможности.
Вы на правильном пути; строки, возвращаемые INNER JOIN
, удовлетворяют условиям соединения. Но это похоже на пересечение только потому, что вы используете равенство в своем условии соединения, применяемом к столбцам из каждой таблицы.
Также имейте в виду, что ПЕРЕСЕЧЕНИЕ
уже является операцией SQL и имеет другое значение - и это не то же самое, что JOIN
.
SQL JOIN
может создать новый тип строки, в которой есть все столбцы из обеих соединенных таблиц. Например: col4, col5 и col6 не существуют в таблице A, но они существуют в результате соединения с таблицей B:
SELECT a.col1, a.col2, a.col3, b.col4, b.col5, b.col6
FROM A INNER JOIN B ON a.col2=b.col5;
SQL INTERSECTION
возвращает строки, общие для двух отдельные таблицы, в которых уже должны быть одинаковые столбцы.
SELECT col1, col2, col3 FROM A
INTERSECT
SELECT col1, col2, col3 FROM B;
Это дает тот же результат, что и следующее соединение:
SELECT a.col1, a.col2, a.col3
FROM A INNER JOIN B ON a.col1=b.col1 AND a.col2=b.col2 AND a.col3=b.col3;
Не все базы данных поддерживают оператор INTERSECTION
.