Полное соединение
Перекрестное соединение (SQL-аналог: CROSS JOIN)
При полном соединении ( CROSS JOIN) производится перекрестное соединение (или декартово произведение) — каждая строка одной таблицы соединяется с каждой строкой второй таблицы, давая тем самым в результате все возможные сочетания строк двух таблиц. При таком соединении порядок таблиц (левая, правая) неважен и отсутствует необходимость в сопоставлении ключевых полей.
Пример:
Для примера возьмем две таблицы. Главная таблица — Персона, присоединяемая — Город.
Главная таблица:
| Имя | Id города |
|---|---|
| Андрей | 1 |
| Леонид | 2 |
| Сергей | 1 |
| Григорий | 4 |
Присоединяемая таблица:
| Id | Город |
|---|---|
| 1 | Москва |
| 2 | Санкт-Петербург |
| 3 | Казань |
Результирующая таблица:
| Имя | 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) производится полное внешнее соединение двух наборов. В результирующий набор добавляются следующие записи:
- Внутреннее соединение (
INNER JOIN) первой и второй таблиц; - Записи первой таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие второй таблице, заполняются значениями
NULL; - Записи второй таблицы, которые не вошли во внутреннее соединение на шаге 1. Для таких записей поля, соответствующие первой таблице, заполняются значениями
NULL.
При таком соединении необходимо сопоставление ключевых полей.
Пример:
Для примера возьмем две таблицы. Главная таблица — Персона, присоединяемая — Город.
Главная таблица:
| Имя | Id города |
|---|---|
| Андрей | 1 |
| Леонид | 2 |
| Сергей | 1 |
| Григорий | 4 |
Присоединяемая таблица:
| Id | Город |
|---|---|
| 1 | Москва |
| 2 | Санкт-Петербург |
| 3 | Казань |
Результирующая таблица:
| Имя | Id города | Город |
|---|---|---|
| Андрей | 1 | Москва |
| Леонид | 2 | Санкт-Петербург |
| Сергей | 1 | Москва |
| Григорий | 4 | <null> |
| <null> | Казань |
Важно: Для того, чтобы при способе слияния Полное соединение использовать
FULL JOINсоединение, необходимо в мастере настройки сопоставить ключевые поля соединяемых наборов. Если сопоставление отсутствует, то задействуется алгоритмCROSS JOINсоединения. При данном способе слияния объем результирующей выборки может очень быстро расти.
При любом соединении (JOIN) в результирующий набор данных включаются ключевые поля только главной таблицы. Чтобы включить ключевые поля присоединяемой таблицы в результирующий набор данных, необходимо установить флаг Добавлять присоединяемые ключевые поля. Если флаг установлен, то результирующая таблица из предыдущего примера будет выглядеть следующим образом:
| Имя | Id города | Город | Id |
|---|---|---|---|
| Андрей | 1 | Москва | 1 |
| Леонид | 2 | Санкт-Петербург | 2 |
| Сергей | 1 | Москва | 1 |
| Григорий | 4 | <null> | |
| <null> | Казань | 3 |