Запросы
Условия в запросах
В запросах существует два типа условий:
Условие накладывается на записи, выбираемые из информационной базы - секция ГДЕ;
Условие накладывается на выбранные и сгруппированные записи - секция ИМЕЮЩИЕ.
Секция ГДЕ
Пусть у нас есть таблица в которой фиксируются транзакции продажи товаров:
Если мы захотим узнать какой товар покупали оптом (100 и более единиц), то нам нужно будет выполнить следующий запрос:
Результат запроса
Запрос.Текст = "
|ВЫБРАТЬ
| Продажи.Товар,
| Продажи.Количество
|ИЗ
| Продажи
|ГДЕ
| Продажи.Количество >= 100";
Секция ИМЕЮЩИЕ
Если же мы захотим узнать все товары, которых всего было продано больше 100 штук, то нам надо сначала сгруппировать записи таблицы и наложить на полученные результат условие:
Результат запроса
Запрос.Текст = "
|ВЫБРАТЬ
| Продажи.Товар,
| СУММА(Продажи.Количество) КАК Количество
|ИЗ
| Продажи
|
|СГРУППИРОВАТЬ ПО
| Продажи.Товар
|
|ИМЕЮЩИЕ
| СУММА(Продажи.Количество) >= 100";
Если бы мы использовали условие ГДЕ, то сначала были бы отсеяны записи по количеству меньше 100, а затем сгруппированы:
Результат запроса
Запрос.Текст = "
|ВЫБРАТЬ
| Продажи.Товар,
| СУММА(Продажи.Количество) КАК Количество
|ИЗ
| Продажи
|ГДЕ
| Продажи.Количество >= 100
|
|СГРУППИРОВАТЬ ПО
| Продажи.Товар";
Об этой особенности стоит помнить и всегда иметь ввиду:
Условия в секции ГДЕ отсеивают записи на этапе выборки из таблицы, условия ИМЕЮЩИЕ действуют на уже выбранные записи.
Источник: http://zapros-1c-8.ru/