KnigaRead.com/

Александр Днепров - Microsoft Access 2007

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Александр Днепров, "Microsoft Access 2007" бесплатно, без регистрации.
Перейти на страницу:

Листинг 6.10.

Запрос на подсчет количества записей

SELECT Count(Товары. Код) AS [Count-Код]

FROM Товары;

7. Перейдите на вкладку Конструктор и выберите команду Выполнить .

Что же делать, если требуется подсчитать количество товаров с ценой более 1000 руб.? Измените созданный запрос.

1. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите из контекстного меню команду Конструктор .

2. Дважды щелкните кнопкой мыши на названии поля Цена , чтобы добавить его в выборку.

3. В строке Групповая операция для поля Цена выберите из раскрывающегося списка значение Условие .

4. В строке Условие отбора для поля Цена введите условие > 1000.

Результирующий бланк итогового запроса с условием показан на рис. 6.22.

Рис. 6.22. Результирующий бланк итогового запроса с условием

Текст итогового запроса с условием приведен в листинге 6.11.

...

Листинг 6.11.

Запрос на подсчет количества записей с условием

SELECT Count(Товары. Код) AS [Count-Код]

FROM Товары

WHERE (((Товары. Цена)>1000));

5. Перейдите на вкладку Конструктор и выберите команду Выполнить . В выборке остались две записи, которые удовлетворяют условию.

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

1. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .

2. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Клиенты . Нажмите кнопку Закрыть .

3. Дважды щелкните кнопкой мыши на названиях полей Номер и Рейтинг , чтобы добавить поля в выборку.

4. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги . В бланке запроса появится строка Групповая операция .

5. В строке Групповая операция для поля Номер выберите в раскрывающемся списке функцию Count .

6. В строке Групповая операция для поля Рейтинг выберите в списке функцию Группировка .

Результирующий бланк итогового запроса с группировкой показан на рис. 6.23.

Рис. 6.23. Результирующий бланк итогового запроса с группировкой

Текст итогового запроса с группировкой приведен в листинге 6.12.

...

Листинг 6.12.

Запрос на подсчет количества записей с группировкой

SELECT Count(Клиенты. [Номер (ID)]) AS [Count-Номер (ID)], Клиенты.

Рейтинг

FROM Клиенты

GROUP BY Клиенты. Рейтинг;

7. Перейдите на вкладку Конструктор и выберите команду Выполнить (рис. 6.24).

Рис. 6.24. Результат выполнения итогового запроса с группировкой

Вы можете видеть, что найдены две записи о клиентах с рейтингом 1000 и одна – с рейтингом 1500 (см. рис. 6.24).

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

1. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .

2. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Товары . Нажмите кнопку Закрыть .

3. Дважды щелкните кнопкой мыши на названиях полей Код , Наименование , Описание , Цена , чтобы добавить поля в выборку.

4. В бланке запроса в строке Условие отбора для поля Цена введите условие In (SELECT MAX(Цена) FROM Товары). Такое условие означает, что сначала будет выполнен подзапрос, находящий максимальное значение цены на товар. Запись о товаре будет выведена только в том случае, если значение поля Цена совпадает с найденной максимальной ценой.

Результирующий бланк итогового запроса показан на рис. 6.25.

Рис. 6.25. Результирующий бланк итогового запроса

Текст итогового запроса приведен в листинге 6.13.

...

Листинг 6.13.

Запрос на выборку записи с максимальным значением поля

SELECT Товары. Код, Товары. Наименование, Товары. Описание, Товары. Цена

FROM Товары

WHERE (((Товары. Цена) In (SELECT MAX(Цена) FROM Товары)));

5. Перейдите на вкладку Конструктор и выберите команду Выполнить . Результат запроса показан на рис. 6.26.

Рис. 6.26. Результат выполнения итогового запроса на поиск записи с максимальным значением поля

Вы видите, что выборка содержит одну запись о товаре, цена на который в таблице Товары является максимальной. Аналогично можно найти товар с минимальной ценой, используя функцию MIN .

Часто для анализа данных требуется выборка из нескольких таблиц. В каче стве примера выведите список клиентов с подсчетом общей суммы их заказов.

1. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .

2. В окне Добавление таблицы дважды щелкните кнопкой мыши на названиях таблиц Клиенты и Заказы . Нажмите кнопку Закрыть .

3. Дважды щелкните кнопкой мыши на названиях полей Номер , Имя , Телефон , Адрес , Рейтинг таблицы Клиенты и поля Цена таблицы Заказы , чтобы добавить поля в выборку.

4. Теперь дважды щелкните кнопкой мыши на связи между таблицами. Откроется окно Параметры объединения (рис. 6.27).

Рис. 6.27. Окно Параметры объединения

5. Установите переключатель в положение Объединение ВСЕХ записей из “Клиенты” и только тех записей из “Заказы”, в которых связанные поля совпадают и нажмите кнопку ОК .

6. На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги . В бланке запроса появится строка Групповая операция .

7. В бланке запроса в строке Групповая операция для поля Сумма выберите из раскрывающегося списка функцию Sum . Для всех остальных полей должно быть выбрано значение Группировка .

Результирующий бланк итогового запроса с объединением показан на рис. 6.28.

Рис. 6.28. Результирующий бланк итогового запроса с объединением

Текст итогового запроса с объединением приведен в листинге 6.14.

...

Листинг 6.14.

Итоговый запрос с объединением таблиц

SELECT Клиенты. [Номер (ID)], Клиенты. Имя, Клиенты. Телефон, Клиенты.

Адрес, Клиенты. Рейтинг, Sum(Заказы. Сумма) AS [Sum-Сумма]

FROM Клиенты LEFT JOIN Заказы ON Клиенты. [Номер (ID)] = Заказы. Клиент

GROUP BY Клиенты. [Номер (ID)], Клиенты. Имя, Клиенты. Телефон, Клиенты.

Адрес, Клиенты. Рейтинг;

8. Перейдите на вкладку Конструктор и выберите команду Выполнить .

Результат выполнения итогового запроса с объединением таблиц показан на рис. 6.29.

Рис. 6.29. Результат выполнения итогового запроса с объединением таблиц

Удаление повторяющихся записей с помощью запросов

Существует еще одна полезная область применения запросов – удаление полностью или частично одинаковых записей. Если взять в качестве примера учебную базу Отдел продаж , то очевидно, что при корректной работе с таблицей Заказы в ней не должно быть записей с одинаковыми значениями полей Товар , Клиент и Дата , так как такие записи должны объединяться в одну с изменением значения поля Количество .

Сначала внесите такие ошибки в таблицу Заказы , просто создав дубликаты существующих записей.

1. Откройте базу данных Отдел продаж .

2. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов .

3. В окне Добавление таблицы дважды щелкните кнопкой мыши на названии таблицы Заказы . Нажмите кнопку Закрыть .

4. На вкладке Конструктор в группе Тип запроса выберите команду Добавление . Откроется окно Добавление .

5. В раскрывающемся списке выберите название результирующей таблицы – Заказы . Установите переключатель в положение В текущей базе данных . Нажмите кнопку ОК .

6. Дважды щелкните кнопкой мыши на названиях полей Дата , Товар , Количество , Сумма , Клиент , чтобы добавить поля в выборку.

7. В бланке запроса в строке Добавление для каждого поля выборки укажите поле назначения, совпадающее с исходным полем, выбирая названия полей из раскрывающегося списка.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*