Выбор ответа Senior Язык запросов обновлено
Размножение строк при соединении
Вопрос
Запрос суммирует продажи по контрагентам и соединяет с таблицей контактных лиц. Сумма получилась в 3 раза больше реальной. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Соединение с контактами размножило строки продаж. Соединение «один ко многим» до агрегирования повторяет каждую строку продаж столько раз, сколько у контрагента контактов.
Варианты ответа
- СУММА в языке запросов 1С считает каждый NULL как 1
- ЛЕВОЕ СОЕДИНЕНИЕ всегда удваивает строки левой таблицы
- Нужно было использовать ОБЪЕДИНИТЬ вместо соединения
- Соединение с контактами размножило строки продажправильный ответ
Разбор
Соединение «один ко многим» до агрегирования повторяет каждую строку продаж столько раз, сколько у контрагента контактов. Правильно сначала сгруппировать продажи (подзапрос или временная таблица), а потом соединять, или соединять только с одной записью. NULL в СУММА игнорируется, левое соединение не удваивает строки само по себе, ОБЪЕДИНИТЬ решает другую задачу.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.