Оператор FULL JOIN осуществляет формирование таблицы из записей двух или нескольких таблиц. В этом операторе не важен порядок следования таблиц, он никак не влияет на окончательный результат, так как оператор является симметричным.
Оператор FULL JOIN можно воспринимать как сочетание операторов INNER JOIN + LEFT JOIN + RIGHT JOIN. Алгоритм его работы следующий:
1. Сначала формируется таблица на основе внутреннего соединения (INNER JOIN);
2. Затем, в таблицу добавляются значения не вошедшие в результат формирования из правой таблицы (LEFT JOIN). Для них, соответствующие записи из правой таблицы заполняются значениями NULL.
3. И последним действием в таблицу добавляются значения не вошедшие в результат формирования из левой таблицы (RIGHT JOIN). Для них, соответствующие записи из левой таблицы заполняются значениями NULL.
// Синтаксис оператора:
SELECT
column_names [,... n]
FROM
Table_1 FULL JOIN Table_2
ON condition;
Рассмотрим пример. Возьмем две известные нам таблицы. Authors и Books. В таблице Books поле Book_ID являются внешним ключом и ссылаются на таблицу Authors.
Выведем авторов всех книг и книги всех авторов:
SELECT * FROM Authors FULL JOIN Books
ON Authors.Author_ID = Books.Book_ID;
Полное внешнее соединение (FULL JOIN) не поддерживается в MySQL. Можно считать, что это – «избыточная» операция, т.к. она представляется через объединение левого и правого внешних соединений.
Для закрепления материала советую самостоятельно отработать данный пример и посмотреть что получиться. Если будут вопросы пишите в комментариях.