Оператор JOIN

Оператор JOIN служит для объединения данных из нескольких таблиц. DB2 поддерживает несколько способов объединения таблиц, включая INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN.

Для демонстрации этих операторов создадим две таблицы.

Table1:

Id1Field1
1A
2B
4C
6D

Table2:

Id2Field2
1AAA
2BBB
2CCC
6DDD
7EEE

INNER JOIN

INNER JOIN – внутреннее объединение при котором из двух таблиц выбираются данные, которые совпадают в обеих таблицах. Критерий по которому происходит объединение данных указывается в инструкции ON.

Для примера напишем запрос для объединения тестовых таблиц по полям Id1 и Id2:

SELECT 
    *
FROM 
    "Table1" 
INNER JOIN
    "Table2" 
ON 
    Id1 = Id2;

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

Id1Field1Id2Field2
1A1AAA
2B2BBB
2B2CCC
6D6DDD

В результате объединения тестовых таблиц в выборку попали только те строки в которых поля Id1, Id2 совпадают. Схематично это можно представить на рисунке:

Результат объединения INNER JOIN
Результат объединения INNER JOIN

LEFT JOIN

Инструкция LEFT JOIN выбирает все данные из первой таблицы и объединяет их с теми данными второй таблицы, в которых есть совпадения с первой таблицей. Те строки первой таблицы в которых не найдено совпадений со второй таблицей дополняются значением NULL.

Критерий по которому происходит объединение данных указывается в инструкции ON.

LEFT JOIN относится в внешнему объединению (OUTER JOIN). В некоторых базах данных допускается использование LEFT OUTER JOIN, что аналогично использованию LEFT JOIN.

Выполним следующий запрос к тестовым таблицам:

SELECT 
    *
FROM 
    "Table1" 
LEFT JOIN
    "Table2" 
ON 
    Id1 = Id2;

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

Id1Field1Id2Field2
1A1AAA
2B2BBB
2B2CCC
4CNULLNULL
6D6DDD

В результате объединения тестовых таблиц в выборку попали записи из первой таблицы, они были дополнены записями из второй таблицы в которых поля Id1, Id2 совпадают, те записи первой таблицы для которых не нашлось соответствия были дополнены значением NULL. Схематично это можно представить на рисунке:

Результат объединения LEFT JOIN
Результат объединения LEFT JOIN

RIGTH JOIN

Инструкция RIGHT JOIN, как следует из названия, прямая противоположность инструкции LEFT JOIN. Она выбирает все данные из второй таблицы и объединяет их с теми данными первой таблицы, в которых есть совпадения со второй таблицей. Те строки второй таблицы в которых не найдено совпадений со строками первой таблицей дополняются значением NULL.

Критерий по которому происходит объединение данных указывается в инструкции ON.

RIGHT JOIN относится в внешнему объединению (OUTER JOIN). В некоторых базах данных допускается использование RIGHT OUTER JOIN, что аналогично использованию RIGHT JOIN.

Запрос для тестирования этой инструкции выглядит следующим образом:

SELECT 
    *
FROM 
    "Table1" 
RIGHT JOIN
    "Table2" 
ON 
    Id1 = Id2;

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

Id1Field1Id2Field2
1A1AAA
2B2BBB
2B2CCC
6D6DDD
NULLNULL7EEE

В результате объединения тестовых таблиц в выборку попали записи из второй таблицы, они были дополнены записями из первой таблицы в которых поля Id1, Id2 совпадают, те записи второй таблицы, для которых не нашлось соответствия были дополнены значением NULL. Схематичное изображение этой операции представлено на рисунке:

Результат объединения RIGHT JOIN
Результат объединения RIGHT JOIN

FULL JOIN

Инструкция FULL JOIN объединяет все данные первой таблицы со всеми данными второй таблицы. Те строки в которых не найдено совпадений дополняются значением NULL.

Критерий по которому происходит объединение данных указывается в инструкции ON.

Запрос для тестирования инструкции:

SELECT 
    *
FROM 
    "Table1" 
FULL JOIN
    "Table2" 
ON 
    Id1 = Id2;

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

Id1Field1Id2Field2
NULLNULL7EEE
1A1AAA
2B2BBB
2B2CCC
4CNULLNULL
6D6DDD

Схематичное изображение операции FULL JOIN представлено на рисунке:

Схематичное изображение операции FULL JOIN
Результат объединения FULL JOIN
avatar
5000
  Подписаться  
Уведомление о