кодесурса
«SQL

SQL полное внешнее соединение

script1adsense2code
script1adsense3code

Что такое полное внешнее соединение в SQL?

В SQL FULL OUTER JOIN объединяет результаты как левого, так и правого внешних объединений и возвращает все (совпадающие или не совпадающие) строки из таблиц с обеих сторон предложения join.

Синтаксис:

 ВЫБРАТЬ * 
ИЗ таблицы 1 
ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ table2 
ON table1.column_name = table2.column_name;

Синтаксическая диаграмма - FULL OUTER JOIN


Пример: SQL FULL OUTER JOIN

Давайте объединим те же две таблицы, используя полное объединение.

«Sql

Код SQL:

SELECT * FROM table_A 
FULL OUTER JOIN table_B 
ON table_A.A=table_B.A;

Выход:

«Sql

Поскольку это полное соединение, все строки (как совпадающие, так и не совпадающие) из обеих таблиц включены в выходные данные. Существует только одно совпадение между таблицей table_A и таблицей table_B, поэтому только одна строка вывода отображает значения во всех столбцах . Все оставшиеся строки вывода содержат только значения из таблицы table_A или таблицы table_B, а для остальных столбцов установлены пропущенные значения.

только одна строка вывода отображает значения во всех столбцах, объясните ниже -

«Sql

Иллюстрированная презентация: SQL FULL OUTER JOIN

«Sql
«Sql
«Sql

Пример: SQL FULL OUTER JOIN между двумя таблицами

Вот пример полного внешнего соединения в SQL между двумя таблицами.

Пример таблицы: продукты


Пример таблицы: компания


Как мы знаем, FULL OUTER JOIN представляет собой комбинацию результатов как LEFT OUTER JOIN, так и RIGHT OUTER JOIN, поэтому здесь мы опишем, как FULL OUTER JOIN выполняет внутренне.

Иллюстрированная презентация:

«Sql

Вот инструкция 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

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

Примечание. Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.

Нажмите на следующее, чтобы получить слайды презентации всех JOINS -

«SQL

Вот новый документ, который представляет собой набор вопросов с короткими и простыми ответами, полезными для изучения SQL, а также для интервью.

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: SQL RIGHT JOIN JOIN
Далее: присоединить стол к себе

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code