Запросы

Условия в запросах

В запросах существует два типа условий:

Условие накладывается на записи, выбираемые из информационной базы - секция ГДЕ;

Условие накладывается на выбранные и сгруппированные записи - секция ИМЕЮЩИЕ.

Секция ГДЕ

Пусть у нас есть таблица в которой фиксируются транзакции продажи товаров:

Если мы захотим узнать какой товар покупали оптом (100 и более единиц), то нам нужно будет выполнить следующий запрос:

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

Запрос.Текст = "

|ВЫБРАТЬ

| Продажи.Товар,

| Продажи.Количество

|ИЗ

| Продажи

|ГДЕ

| Продажи.Количество >= 100";

Секция ИМЕЮЩИЕ

Если же мы захотим узнать все товары, которых всего было продано больше 100 штук, то нам надо сначала сгруппировать записи таблицы и наложить на полученные результат условие:

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

Запрос.Текст = "

|ВЫБРАТЬ

| Продажи.Товар,

| СУММА(Продажи.Количество) КАК Количество

|ИЗ

| Продажи

|

|СГРУППИРОВАТЬ ПО

| Продажи.Товар

|

|ИМЕЮЩИЕ

| СУММА(Продажи.Количество) >= 100";

Если бы мы использовали условие ГДЕ, то сначала были бы отсеяны записи по количеству меньше 100, а затем сгруппированы:

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

Запрос.Текст = "

|ВЫБРАТЬ

| Продажи.Товар,

| СУММА(Продажи.Количество) КАК Количество

|ИЗ

| Продажи

|ГДЕ

| Продажи.Количество >= 100

|

|СГРУППИРОВАТЬ ПО

| Продажи.Товар";

Об этой особенности стоит помнить и всегда иметь ввиду:

Условия в секции ГДЕ отсеивают записи на этапе выборки из таблицы, условия ИМЕЮЩИЕ действуют на уже выбранные записи.

Источник: http://zapros-1c-8.ru/