SQL полное внешнее соединение
Что такое полное внешнее соединение в SQL?
В SQL FULL OUTER JOIN объединяет результаты как левого, так и правого внешних объединений и возвращает все (совпадающие или не совпадающие) строки из таблиц с обеих сторон предложения join.
Синтаксис:
ВЫБРАТЬ * ИЗ таблицы 1 ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ table2 ON table1.column_name = table2.column_name;
Синтаксическая диаграмма - FULL OUTER JOIN
Пример: SQL FULL OUTER JOIN
Давайте объединим те же две таблицы, используя полное объединение.
Код SQL:
SELECT * FROM table_A
FULL OUTER JOIN table_B
ON table_A.A=table_B.A;
Выход:
Поскольку это полное соединение, все строки (как совпадающие, так и не совпадающие) из обеих таблиц включены в выходные данные. Существует только одно совпадение между таблицей table_A и таблицей table_B, поэтому только одна строка вывода отображает значения во всех столбцах . Все оставшиеся строки вывода содержат только значения из таблицы table_A или таблицы table_B, а для остальных столбцов установлены пропущенные значения.
только одна строка вывода отображает значения во всех столбцах, объясните ниже -
Иллюстрированная презентация: SQL FULL OUTER JOIN
Пример: SQL FULL OUTER JOIN между двумя таблицами
Вот пример полного внешнего соединения в SQL между двумя таблицами.
Пример таблицы: продукты
Пример таблицы: компания
Как мы знаем, FULL OUTER JOIN представляет собой комбинацию результатов как LEFT OUTER JOIN, так и RIGHT OUTER JOIN, поэтому здесь мы опишем, как FULL OUTER JOIN выполняет внутренне.
Иллюстрированная презентация:
Вот инструкция SQL, которая возвращает все строки из таблицы 'foods' и таблицы 'company', используя предложение "FULL OUTER JOIN".
Код SQL:
SELECT a.company_id AS "a.ComID",
a.company_name AS "C_Name",
b.company_id AS "b.ComID",
b.item_name AS "I_Name"
FROM company a
FULL OUTER JOIN foods b
ON a.company_id = b.company_id;
Выход:
a.ComID C_Name b.ComID I_Name ---------- ------------------------- ---------- ----- -------- 16 Akas Foods 16 Chex Mix 15 Jack Hill Ltd 15 Cheez-It 15 Jack Hill Ltd 15 BN Бисквит 17 гурманов. 17 Могучий Мунк 15 Jack Hill Ltd 15 Пот Райс 18 Заказать все 18 Яффских тортов Соль и Шейк 19 глотков
FULL OUTER JOIN, используя предложение WHERE
Мы можем включить предложение WHERE в FULL OUTER JOIN, чтобы получить возврат только тех строк, в которых не существует совпадающих данных между присоединяющимися таблицами.
Следующий запрос возвращает только те компании, у которых нет соответствующих пищевых продуктов в продуктах, а также тот пищевой продукт в продуктах, которые не соответствуют указанной компании.
SELECT a.company_id AS "a.ComID",
a.company_name AS "C_Name",
b.company_id AS "b.ComID",
b.item_name AS "I_Name"
FROM company a
FULL OUTER JOIN foods b
ON a.company_id = b.company_id
WHERE a.company_id IS NULL
OR b.company_id IS NULL
ORDER BY company_name;
Выход:
a.ComID C_Name b.ComID I_Name ---------- ------------------------- ---------- ----- ---------- 19 глотков Соль и Шейк
FULL OUTER JOIN с использованием предложения UNION
Предложение UNION может использоваться в качестве альтернативы для получения того же результата, что и FULL OUTER JOIN
Вот пример:
Вот оператор SQL:
ВЫБЕРИТЕ table_a.A, table_a.M, table_b.A, table_b.N ИЗ таблицы_А FULL OUTER JOIN table_B ON table_A.a = table_b.A ORDER BY table_A.A;
FULL OUTER JOIN с использованием предложений LEFT и RIGHT OUTER JOIN и UNION
Следующий код представляет собой комбинацию LEFT OUTER JOIN и RIGHT OUTER JOIN и объединяется с помощью предложения UNION
SELECT table_a.A,table_a.M,table_b.A,table_b.N
FROM table_A
LEFT OUTER JOIN table_B
ON table_A.a=table_b.A
UNION
SELECT table_a.A,table_a.M,table_b.A,table_b.N
FROM table_A
RIGHT OUTER JOIN table_B
ON table_A.a=table_b.A;
Примечание. Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.
Нажмите на следующее, чтобы получить слайды презентации всех JOINS -
Вот новый документ, который представляет собой набор вопросов с короткими и простыми ответами, полезными для изучения SQL, а также для интервью.
Упражнения по SQL
- Упражнения по SQL, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL ПОДПИСИ
- SQL Union [9 упражнений]
- SQL View [16 упражнений]
- Управление учетными записями пользователей SQL [16 упражнение]
- База данных фильмов
- ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Футбольная база
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- База данных больницы
- База данных сотрудников
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
- Еще не все!
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущий: SQL RIGHT JOIN JOIN
Далее: присоединить стол к себе
Новый контент: Composer: менеджер зависимостей для PHP , R программирования