Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод. указания к ЛР № 3

.pdf
Скачиваний:
39
Добавлен:
25.11.2018
Размер:
128.43 Кб
Скачать

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

Давайте напишем запрос, который запрашивает из таблицы Справочник.Еда наименование

еды, её цвет, вкус и калорийность:

ВЫБРАТЬ Наименование, Цвет, Вкус,

Калорийность

ИЗ

Справочник.Еда

Секция ГДЕ

А теперь давайте сделаем, чтобы вернулась еда только жёлтого цвета. Делается это при помощи секции ГДЕ в которой необходимо задать условие отбора:

ВЫБРАТЬ Наименование, Цвет, Вкус,

Калорийность

ИЗ

Справочник.Еда

ГДЕ

Цвет.Наименование = "Жёлтый"

Обратите внимание, что поля, которые участвуют в условии (в нашем случае поле Цвет) не

обязаны входить в список выбираемых полей:

ВЫБРАТЬ Наименование, Вкус, Калорийность

ИЗ

Справочник.Еда

ГДЕ

Цвет.Наименование = "Жёлтый"

Условие отбора может определяться и как простое логическое выражение, и как более сложное, в котором простые логические выражения соединяются между собой логическими операторами И, ИЛИ, НЕ.

Для примера, давайте выберем еду, у которой цвет белый или калорийность больше 100:

ВЫБРАТЬ Наименование, Цвет, Калорийность

ИЗ

Справочник.Еда

ГДЕ

Цвет.Наименование = "Белый" ИЛИ Калорийность > 100

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

Если в запросе используется группировка и мы хотим наложить условие на результаты группировки, секция ГДЕ не подойдёт. Вместо неё нужно использовать секцию ИМЕЮЩИЕ.

Давайте подсчитаем суммарную калорийность еды по цветам. Для этого используем

группировку по цвету и агрегатную функцию СУММА по калорийности:

ВЫБРАТЬ Цвет,

СУММА(Калорийность)

ИЗ

Справочник.Еда СГРУППИРОВАТЬ ПО

Цвет

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

ВЫБРАТЬ

 

Цвет,

 

СУММА(Калорийность)

 

ИЗ

 

Справочник.Еда

 

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

 

Цвет

 

ИМЕЮЩИЕ

 

СУММА(Калорийность)

> 100

Таким образом, секция ИМЕЮЩИЕ позволяет накладывать условия на значения агрегатных функций при группировке.

Обратите внимание, что агрегатные функции, которые участвуют в условии (в нашем случае

поле СУММА(Калорийность)) не обязаны входить в список выборки:

ВЫБРАТЬ

Цвет

ИЗ

Справочник.Еда СГРУППИРОВАТЬ ПО

Цвет

ИМЕЮЩИЕ СУММА(Калорийность) > 100

Условие отбора секции ИМЕЮЩИЕ может также определяться и как простое логическое выражение, и как более сложное, в котором простые логические выражения соединяются между собой логическими операторами И, ИЛИ, НЕ.

Для примера, давайте выберем цвета, имеющие суммарную калорийность больше 200 И

меньше 300:

ВЫБРАТЬ Цвет,

СУММА(Калорийность)

ИЗ

Справочник.Еда СГРУППИРОВАТЬ ПО

Цвет

ИМЕЮЩИЕ СУММА(Калорийность) > 200 И

СУММА(Калорийность) < 300

задание

а) Напишите запрос, который получает из таблицы Справочник.Вкусы все вкусы, кроме солёного:

б) Напишите запрос, который получает из таблицы Справочник.Еда всю еду, которая сладкая или кислая по вкусу:

в) Напишите запрос, который выводит вкус, средняя калорийность которого (в таблице

Справочник.Еда) меньше 100: