Выбор ответа Senior Язык запросов обновлено

Размножение строк при соединении

Вопрос

Запрос суммирует продажи по контрагентам и соединяет с таблицей контактных лиц. Сумма получилась в 3 раза больше реальной. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Соединение с контактами размножило строки продаж. Соединение «один ко многим» до агрегирования повторяет каждую строку продаж столько раз, сколько у контрагента контактов.

Варианты ответа

  1. СУММА в языке запросов 1С считает каждый NULL как 1
  2. ЛЕВОЕ СОЕДИНЕНИЕ всегда удваивает строки левой таблицы
  3. Нужно было использовать ОБЪЕДИНИТЬ вместо соединения
  4. Соединение с контактами размножило строки продажправильный ответ

Разбор

Соединение «один ко многим» до агрегирования повторяет каждую строку продаж столько раз, сколько у контрагента контактов. Правильно сначала сгруппировать продажи (подзапрос или временная таблица), а потом соединять, или соединять только с одной записью. NULL в СУММА игнорируется, левое соединение не удваивает строки само по себе, ОБЪЕДИНИТЬ решает другую задачу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.