Оператор SQL FULL JOIN


Оператор SQL FULL JOIN осуществляет формирование таблицы из записей двух или нескольких таблиц. В операторе SQL FULL JOIN не важен порядок следования таблиц, он никак не влияет на окончательный результат, так как оператор является симметричным.

Оператор SQL FULL JOIN можно воспринимать как сочетание операторов SQL INNER JOIN + SQL LEFT JOIN + SQL RIGHT JOIN. Алгоритм его работы следующий:

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

Оператор SQL FULL JOIN имеет следующий синтаксис:

SELECT
    column_names [,... n]
FROM
    Table_1 FULL JOIN Table_2
ON condition

Примеры оператора SQL FULL JOIN. Имеются две таблицы:

Authors — содержит в себе информацию об авторах книг:

AuthorID AuthorName
1 Bruce Eckel
2 Robert Lafore
3 Andrew Tanenbaum

Books — содержит в себе информацию о названии книг:

BookID BookName
3 Modern Operating System
1 Thinking in Java
3 Computer Architecture
4 Programming in Scala

В таблице Books поле BookID являются внешним ключом и ссылаются на таблицу Authors.

Пример 1. Используя оператор SQL FULL JOIN вывести авторов всех книг и книги всех авторов:

SELECT *
FROM Authors FULL JOIN Books
ON Authors.AuthorID = Books.BookID

Результирующая таблица будет выглядеть следующим образом:

Authors.AuthorID Authors.AuthorName Books.BookID Books.BookName
1 Bruce Eckel 1 Thinking in Java
2 Robert Lafore NULL NULL
3 Andrew Tanenbaum 3 Modern Operating System
3 Andrew Tanenbaum 3 Computer Architecture
NULL NULL 4 Programming in Scala