FULL JOIN
Это оператор полного внешнего соединения, для которого неважен порядок указания таблиц.
Результат объединения FULL JOIN формируется следующим образом:
- Сначала каждая строка левой таблицы сопоставляется с каждой строкой правой таблицы (происходит декартово произведение).
- Затем для каждой объединённой строки проверяется условие соединения, указанное после оператора
ON. - После этого все объединённые строки, для которых условие оказалось истинным, добавляются в результирующую таблицу.
- Далее в результат добавляются те записи из левой и правой таблиц (внимание: из обеих таблиц), для которых условие оказалось ложным и которые не вошли в соединение на предыдущем шаге. При этом для таких записей соответствующие поля из другой таблицы (для левой — это поля из правой, для правой — это поля из левой) заполняются значениями
NULL.
Этот алгоритм можно свести к следующей последовательности действий:
- Сначала в соответствии с указанным условием выполняется INNER JOIN левой и правой таблиц.
- Далее в результат добавляются те записи из левой и правой таблиц (внимание: из обеих таблиц), для которых условие оказалось ложным и которые не вошли в соединение на предыдущем шаге. При этом для таких записей соответствующие поля из другой таблицы (для левой — это поля из правой, для правой — это поля из левой) заполняются значениями
NULL.
Круги Эйлера: