Найти в Дзене

Как работает объединение в запросе 1с

Оглавление

В 1С:Предприятие объединение (JOIN) используется для соединения данных из двух или более таблиц в едином запросе. Это позволяет получать комплексные данные из различных источников. Рассмотрим основные типы объединения и пример их использования.

Основные типы объединения

  1. INNER JOIN: Возвращает строки, имеющие совпадения в обеих таблицах.
  2. LEFT JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, возвращает NULL для правой таблицы.
  3. RIGHT JOIN: Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, возвращает NULL для левой таблицы.
  4. FULL JOIN: Возвращает все строки, когда есть совпадения в одной из таблиц.

Пример запроса с использованием INNER JOIN

1C

ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка

В этом примере данные из справочника "Сотрудники" объединяются с данными из справочника "Должности" по ключу "Должность".

Пример запроса с использованием LEFT JOIN

1C

ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка

В этом примере возвращаются все сотрудники, даже если у них нет указанной должности, при этом для таких сотрудников будет возвращено значение NULL в поле "Должность".

Пример запроса с использованием RIGHT JOIN

1C

ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ПРАВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка

В этом примере возвращаются все должности, даже если к ним не привязан ни один сотрудник, при этом для таких должностей будет возвращено значение NULL в полях сотрудника.

Пример запроса с использованием FULL JOIN

1C

ВЫБРАТЬ
Сотрудники.Код КАК КодСотрудника,
Сотрудники.ФИО КАК ФИОСотрудника,
Должности.Наименование КАК Должность
ИЗ
Справочник.Сотрудники КАК Сотрудники
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Должности КАК Должности
ПО Сотрудники.Должность = Должности.Ссылка

В этом примере возвращаются все сотрудники и все должности, даже если у некоторых сотрудников нет указанной должности, или некоторые должности не привязаны к сотрудникам.