Спецификации соединений

При определении нескольких источников в списке источников для каждой записи из первой таблицы-источника осуществляется выборка из второй таблицы-источника, и т. д. Таким образом, в результате запроса формируются все возможные комбинации всех записей из всех указанных источников.

Пример:

ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   Банки.Ссылка КАК Банк

ИЗ
   Справочник.Контрагенты КАК Контрагенты,
   Справочник.Банки КАк Банки

Результат запроса:

 Контрагент  

 Банк

 Поставщики  

 АКБ ИвестБанк

 Поставщики  

 АКБ ПромСтройБанк

 Трикотажная фабрика "Заря"

 АКБ ИвестБанк

 Трикотажная фабрика "Заря"

 АКБ ПромСтройБанк 

 Фабрика джинсовой одежды  

 АКБ ИвестБанк

 Фабрика джинсовой одежды  

 АКБ ПромСтройБанк

 Покупатели  

 АКБ ИвестБанк

 Покупатели  

 АКБ ПромСтройБанк

 Ярмарка одежды  

 АКБ ИвестБанк

 Ярмарка одежды  

 АКБ ПромСтройБанк

 Торговый дом "Буденовский"

 АКБ ИвестБанк

 Торговый дом "Буденовский"

 АКБ ПромСтройБанк

 Павильон 45 на оптовом рынке  

 АКБ ИвестБанк

 Павильон 45 на оптовом рынке  

 АКБ ПромСтройБанк

 Бавария – фарфор  

 АКБ ИвестБанк

 Бавария – фарфор  

 АКБ ПромСтройБанк

 Фабрика джинсовой одежды  

 АКБ ИвестБанк

 Фабрика джинсовой одежды  

 АКБ ПромСтройБанк

 АКБ ПромСтройБанк  

 АКБ ИвестБанк

 АКБ ПромСтройБанк  

 АКБ ПромСтройБанк

Результат запроса содержит комбинации всех контрагентов со всеми банками. Как правило, такой результат сам по себе смысла не имеет. Обычно комбинации записей из разных исходных таблиц требуется ограничить какими-либо условиями. В языке запросов имеется возможность описать такое соединение источников, указывая сами источники и определяя условия, в соответствии с которыми комбинации записей из этих источников требуется включить в результат запроса.

Соединения бывают нескольких видов; они описываются следующими правилами:

<Перечень соединений>
      |
      <Соединение> [<Перечень соединений>]
            |
            [ВНУТРЕННЕЕ] СОЕДИНЕНИЕ <Описание источника>
ПО <Условие отбора> |
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника>
ПО <Условие отбора> |
ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника>
ПО <Условие отбора> |
ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ <Описание источника>
ПО <Условие отбора>

В общем случае <Перечень соединений> может содержать и описывать не только одно соединение (двух источников), но и несколько соединений нескольких источников сразу.

<Описание источника> содержит описание исходной таблицы.

<Условие отбора> содержит условия, в соответствии с которыми в выборке необходимо соединить данные из исходных таблиц – источников запроса.

Ключевые слова ЛЕВОЕ, ПРАВОЕ и ПОЛНОЕ уточняют характер соединения. Слова ВНУТРЕННЕЕ или ВНЕШНЕЕ можно не указывать вообще, они повышают наглядность и удобочитаемость текста запроса.

Соединяемые источники не равнозначны между собой, и в некоторых случаях результат зависит от того, какая таблица указана первой, до ключевого слова СОЕДИНЕНИЕ (слева от него), а какая – второй (справа).

1C:Enterprise Developer's Community