Метод. указания к ЛР № 3
.pdfУсловия в запросах
Давайте напишем запрос, который запрашивает из таблицы Справочник.Еда наименование
еды, её цвет, вкус и калорийность:
ВЫБРАТЬ Наименование, Цвет, Вкус,
Калорийность
ИЗ
Справочник.Еда
Секция ГДЕ
А теперь давайте сделаем, чтобы вернулась еда только жёлтого цвета. Делается это при помощи секции ГДЕ в которой необходимо задать условие отбора:
ВЫБРАТЬ Наименование, Цвет, Вкус,
Калорийность
ИЗ
Справочник.Еда
ГДЕ
Цвет.Наименование = "Жёлтый"
Обратите внимание, что поля, которые участвуют в условии (в нашем случае поле Цвет) не
обязаны входить в список выбираемых полей:
ВЫБРАТЬ Наименование, Вкус, Калорийность
ИЗ
Справочник.Еда
ГДЕ
Цвет.Наименование = "Жёлтый"
Условие отбора может определяться и как простое логическое выражение, и как более сложное, в котором простые логические выражения соединяются между собой логическими операторами И, ИЛИ, НЕ.
Для примера, давайте выберем еду, у которой цвет белый или калорийность больше 100:
ВЫБРАТЬ Наименование, Цвет, Калорийность
ИЗ
Справочник.Еда
ГДЕ
Цвет.Наименование = "Белый" ИЛИ Калорийность > 100
Секция ИМЕЮЩИЕ
Если в запросе используется группировка и мы хотим наложить условие на результаты группировки, секция ГДЕ не подойдёт. Вместо неё нужно использовать секцию ИМЕЮЩИЕ.
Давайте подсчитаем суммарную калорийность еды по цветам. Для этого используем
группировку по цвету и агрегатную функцию СУММА по калорийности:
ВЫБРАТЬ Цвет,
СУММА(Калорийность)
ИЗ
Справочник.Еда СГРУППИРОВАТЬ ПО
Цвет
А теперь наложим условие на результат группировки так, чтобы остались только цвета с суммарной калорийностью больше 100:
ВЫБРАТЬ |
|
Цвет, |
|
СУММА(Калорийность) |
|
ИЗ |
|
Справочник.Еда |
|
СГРУППИРОВАТЬ ПО |
|
Цвет |
|
ИМЕЮЩИЕ |
|
СУММА(Калорийность) |
> 100 |
Таким образом, секция ИМЕЮЩИЕ позволяет накладывать условия на значения агрегатных функций при группировке.
Обратите внимание, что агрегатные функции, которые участвуют в условии (в нашем случае
поле СУММА(Калорийность)) не обязаны входить в список выборки:
ВЫБРАТЬ
Цвет
ИЗ
Справочник.Еда СГРУППИРОВАТЬ ПО
Цвет
ИМЕЮЩИЕ СУММА(Калорийность) > 100
Условие отбора секции ИМЕЮЩИЕ может также определяться и как простое логическое выражение, и как более сложное, в котором простые логические выражения соединяются между собой логическими операторами И, ИЛИ, НЕ.
Для примера, давайте выберем цвета, имеющие суммарную калорийность больше 200 И
меньше 300:
ВЫБРАТЬ Цвет,
СУММА(Калорийность)
ИЗ
Справочник.Еда СГРУППИРОВАТЬ ПО
Цвет
ИМЕЮЩИЕ СУММА(Калорийность) > 200 И
СУММА(Калорийность) < 300
задание
а) Напишите запрос, который получает из таблицы Справочник.Вкусы все вкусы, кроме солёного:
б) Напишите запрос, который получает из таблицы Справочник.Еда всю еду, которая сладкая или кислая по вкусу:
в) Напишите запрос, который выводит вкус, средняя калорийность которого (в таблице
Справочник.Еда) меньше 100: