Полное слияние Полное соединение

Перекрестное соединение (SQL-аналог: CROSS JOIN)

При полном соединении ( CROSS JOIN) производится перекрестное соединение (или декартово произведение) — каждая строка одной таблицы соединяется с каждой строкой второй таблицы, давая тем самым в результате все возможные сочетания строк двух таблиц. При таком соединении порядок таблиц (левая, правая) неважен и отсутствует необходимость в сопоставлении ключевых полей.

Пример:

Для примера возьмем две таблицы. Главная таблица — Персона, присоединяемая — Город.

Главная таблица:

Имя Id города
Андрей 1
Леонид 2
Сергей 1
Григорий 4

Присоединяемая таблица:

Id Город
1 Москва
2 Санкт-Петербург
3 Казань
Для CROSS JOIN слияния связь между таблицами не устанавливается
Рисунок 1. Для CROSS JOIN слияния связь между таблицами не устанавливается

Результирующая таблица:

Имя Id города id Город
Андрей 1 1 Москва
Андрей 1 2 Санкт-Петербург
Андрей 1 3 Казань
Леонид 2 1 Москва
Леонид 2 2 Санкт-Петербург
Леонид 2 3 Казань
Сергей 1 1 Москва
Сергей 1 2 Санкт-Петербург
Сергей 1 3 Казань
Григорий 4 1 Москва
Григорий 4 2 Санкт-Петербург
Григорий 4 3 Казань

Полное соединение (SQL-аналог: FULL JOIN)

При полном соединении (FULL JOIN) производится полное внешнее соединение двух наборов. В результирующий набор добавляются следующие записи:

  1. Внутреннее соединение (INNER JOIN) первой и второй таблиц;
  2. Записи первой таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие второй таблице, заполняются значениями NULL;
  3. Записи второй таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие первой таблице, заполняются значениями NULL.

При таком соединении необходимо сопоставление ключевых полей.

Пример:

Для примера возьмем две таблицы. Главная таблица — Персона, присоединяемая — Город.

Главная таблица:

Имя Id города
Андрей 1
Леонид 2
Сергей 1
Григорий 4

Присоединяемая таблица:

Id Город
1 Москва
2 Санкт-Петербург
3 Казань
Связь
Рисунок 2. Связь

Результирующая таблица:

Имя Id города Город
Андрей 1 Москва
Леонид 2 Санкт-Петербург
Сергей 1 Москва
Григорий 4 <null>
<null> Казань

Важно: Для того, чтобы при способе слияния Полное соединение использовать FULL JOIN соединение, необходимо в мастере настройки сопоставить ключевые поля соединяемых наборов. Если сопоставление отсутствует, то задействуется алгоритм CROSS JOIN соединения. При данном способе слияния объем результирующей выборки может очень быстро расти.

При любом соединении (JOIN) в результирующий набор данных включаются ключевые поля только главной таблицы. Чтобы включить ключевые поля присоединяемой таблицы в результирующий набор данных, необходимо установить флаг Добавлять присоединяемые ключевые поля. Если флаг установлен, то результирующая таблица из предыдущего примера будет выглядеть следующим образом:

Имя Id города Город Id
Андрей 1 Москва 1
Леонид 2 Санкт-Петербург 2
Сергей 1 Москва 1
Григорий 4 <null>
<null> Казань 3