В 1С:Предприятие объединение (JOIN) используется для соединения данных из двух или более таблиц в едином запросе. Это позволяет получать комплексные данные из различных источников. Рассмотрим основные типы объединения и пример их использования.
Основные типы объединения
- INNER JOIN: Возвращает строки, имеющие совпадения в обеих таблицах.
- LEFT JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, возвращает NULL для правой таблицы.
- RIGHT JOIN: Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, возвращает NULL для левой таблицы.
- FULL JOIN: Возвращает все строки, когда есть совпадения в одной из таблиц.
Пример запроса с использованием INNER JOIN
1C
ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка
В этом примере данные из справочника "Сотрудники" объединяются с данными из справочника "Должности" по ключу "Должность".
Пример запроса с использованием LEFT JOIN
1C
ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка
В этом примере возвращаются все сотрудники, даже если у них нет указанной должности, при этом для таких сотрудников будет возвращено значение NULL в поле "Должность".
Пример запроса с использованием RIGHT JOIN
1C
ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ПРАВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка
В этом примере возвращаются все должности, даже если к ним не привязан ни один сотрудник, при этом для таких должностей будет возвращено значение NULL в полях сотрудника.
Пример запроса с использованием FULL JOIN
1C
ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка
В этом примере возвращаются все сотрудники и все должности, даже если у некоторых сотрудников нет указанной должности, или некоторые должности не привязаны к сотрудникам.