Оператор JOIN
служит для объединения данных из нескольких таблиц. DB2 поддерживает несколько способов объединения таблиц, включая INNER JOIN
, LEFT JOIN
, RIGHT JOIN
, FULL JOIN
.
Для демонстрации этих операторов создадим две таблицы.
Table1:
Id1 | Field1 |
---|---|
1 | A |
2 | B |
4 | C |
6 | D |
Table2:
Id2 | Field2 |
---|---|
1 | AAA |
2 | BBB |
2 | CCC |
6 | DDD |
7 | EEE |
INNER JOIN
INNER JOIN
– внутреннее объединение при котором из двух таблиц выбираются данные, которые совпадают в обеих таблицах. Критерий по которому происходит объединение данных указывается в инструкции ON
.
Для примера напишем запрос для объединения тестовых таблиц по полям Id1
и Id2
:
SELECT * FROM "Table1" INNER JOIN "Table2" ON Id1 = Id2;
Результатом выполнения этого запроса будет следующая таблица:
Id1 | Field1 | Id2 | Field2 |
---|---|---|---|
1 | A | 1 | AAA |
2 | B | 2 | BBB |
2 | B | 2 | CCC |
6 | D | 6 | DDD |
В результате объединения тестовых таблиц в выборку попали только те строки в которых поля Id1
, Id2
совпадают. Схематично это можно представить на рисунке:

LEFT JOIN
Инструкция LEFT JOIN
выбирает все данные из первой таблицы и объединяет их с теми данными второй таблицы, в которых есть совпадения с первой таблицей. Те строки первой таблицы в которых не найдено совпадений со второй таблицей дополняются значением NULL
.
Критерий по которому происходит объединение данных указывается в инструкции ON
.
LEFT JOIN
относится в внешнему объединению (OUTER JOIN
). В некоторых базах данных допускается использование LEFT OUTER JOIN
, что аналогично использованию LEFT JOIN
.
Выполним следующий запрос к тестовым таблицам:
SELECT * FROM "Table1" LEFT JOIN "Table2" ON Id1 = Id2;
Результатом выполнения этого запроса будет следующая таблица:
Id1 | Field1 | Id2 | Field2 |
---|---|---|---|
1 | A | 1 | AAA |
2 | B | 2 | BBB |
2 | B | 2 | CCC |
4 | C | NULL | NULL |
6 | D | 6 | DDD |
В результате объединения тестовых таблиц в выборку попали записи из первой таблицы, они были дополнены записями из второй таблицы в которых поля Id1
, Id2
совпадают, те записи первой таблицы для которых не нашлось соответствия были дополнены значением NULL
. Схематично это можно представить на рисунке:

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;
Результатом выполнения этого запроса будет следующая таблица:
Id1 | Field1 | Id2 | Field2 |
---|---|---|---|
1 | A | 1 | AAA |
2 | B | 2 | BBB |
2 | B | 2 | CCC |
6 | D | 6 | DDD |
NULL | NULL | 7 | EEE |
В результате объединения тестовых таблиц в выборку попали записи из второй таблицы, они были дополнены записями из первой таблицы в которых поля Id1
, Id2
совпадают, те записи второй таблицы, для которых не нашлось соответствия были дополнены значением NULL
. Схематичное изображение этой операции представлено на рисунке:

FULL JOIN
Инструкция FULL JOIN
объединяет все данные первой таблицы со всеми данными второй таблицы. Те строки в которых не найдено совпадений дополняются значением NULL
.
Критерий по которому происходит объединение данных указывается в инструкции ON
.
Запрос для тестирования инструкции:
SELECT * FROM "Table1" FULL JOIN "Table2" ON Id1 = Id2;
Результатом выполнения этого запроса будет следующая таблица:
Id1 | Field1 | Id2 | Field2 |
---|---|---|---|
NULL | NULL | 7 | EEE |
1 | A | 1 | AAA |
2 | B | 2 | BBB |
2 | B | 2 | CCC |
4 | C | NULL | NULL |
6 | D | 6 | DDD |
Схематичное изображение операции FULL JOIN
представлено на рисунке:
