Оператор SQL: FULL JOIN

Оператор 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.

Author_ID AuthorName
1 Bruce Eckel
2 Robert Lafore
3 Andrew Tanenbaum


Book_ID BookName
3 Modern Operating System
1 Thinking in JavaScript
3 Computer Architecture
4 Programming in PHP

Выведем авторов всех книг и книги всех авторов:

SELECT * FROM Authors FULL JOIN Books
ON Authors.Author_ID = Books.Book_ID;

Полное внешнее соединение (FULL JOIN) не поддерживается в MySQL. Можно считать, что это – «избыточная» операция, т.к. она представляется через объединение левого и правого внешних соединений.

Для закрепления материала советую самостоятельно отработать данный пример и посмотреть что получиться. Если будут вопросы пишите в комментариях.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

2 ответа к “Оператор SQL: FULL JOIN”

Добрый день.
При выполнении задания возникла ошибка:
SQL запрос: Документация

SELECT *
FROM authors FULL JOIN books
ON authors.AuthorID = books.BookID LIMIT 0, 25
Ответ MySQL: Документация

#1054 – Неизвестный столбец ‘authors.AuthorID’ в ‘on clause’
Не поможете разобраться? Столбец AuthorID в таблице authors есть.

 

Попробуйте
SELECT *
FROM authors LEFT JOIN books
ON authors.AuthorID = books.BookID LIMIT 0, 25

или

SELECT *
FROM authors RIGHT JOIN books
ON authors.AuthorID = books.BookID LIMIT 0, 25

Если вы выполняете запрос на MYSQL, тогда full join не подойдет, т.к. он не работает на нем.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: