Microsoft Access 2007 — страница 28 из 36

Текст запроса на выборку приведен в листинге 6.7.

...

Листинг 6.7.

Запрос на выборку

SELECT Заказы.*, Заказы. Клиент

FROM Заказы

WHERE (((Заказы. Клиент)=1));

7. Теперь перейдите на вкладку Конструктор и выберите команду Выполнить . На рис. 6.16 показан результат выполнения запроса. Если результат выборки содержит только записи, относящиеся к первому клиенту, значит, запрос составлен верно.

Рис. 6.16. Результат выполнения запроса на выборку

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

9. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление .

10. В бланке запроса в строке Удаление в столбце со значком * должно быть установлено значение Из , а в столбце с условием – значение Условие .

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

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

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

...

Листинг 6.8.

Запрос на удаление

DELETE Заказы.*, Заказы. Клиент

FROM Заказы

WHERE (((Заказы. Клиент)=1));

11. Нажмите кнопку Выполнить . Откроется окно подтверждения операции.

12. Нажмите кнопку Да .

13. Откройте таблицу Заказы и посмотрите на внесенные в данные изменения (рис. 6.18). Теперь в таблице не осталось записей клиента с номером 1 .

Рис. 6.18. Таблица Заказы после выполнения запроса на удаление

Обычно запросы на обновление или удаление используются, когда необходимо быстро обновить или удалить большое количество данных. Если нужно удалить несколько записей, как в данном случае, и это проще сделать вручную, можно открыть таблицу в режиме таблицы, выбрать поля или строки, которые требуется удалить, и нажать клавишу Delete .

Теперь удалите запись, являющуюся стороной «один» в отношении «один ко многим».

1. Откройте вкладку Работа с базами данных и в группе Показать или скрыть выберите команду Схема данных . Отобразится схема связей между таблицами базы данных (рис. 6.19).

Рис. 6.19. Вкладка Схема данных

Вы можете видеть линии, связывающие таблицы и представляющие собой связи между данными. Возле каждой таблицы указано, какой стороной отношения она является. Возле таблицы Товары указана 1 , следовательно, эта таблица является стороной «один» в отношении «один ко многим» к таблице Заказы .

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

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

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

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

6. В бланке запроса в строке Условие отбора для поля Код введите условие выборки [Заказы]![Код] < 4. Таким образом, будут удалены все товары, имеющие код меньше четырех.

7. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление .

8. В бланке запроса в строке Удаление в столбце со знаком * должно быть установлено значение Из , а в столбце с условием – значение Условие .

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

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

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

...

Листинг 6.9.

Запрос на удаление

DELETE Товары.*, Товары. Код

FROM Товары

WHERE (((Товары. Код)<4));

9. Нажмите кнопку Выполнить . Откроется окно подтверждения операции.

10. Нажмите кнопку Да . Записи не были удалены, так как существуют зависимые записи в таблице Заказы .

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

1) Нажмите кнопку Нет .

2) Перейдите на вкладку Схема данных .

3) Дважды щелкните кнопкой мыши на связи между таблицами Товары и Заказы . Откроется окно Изменение связей (рис. 6.21).

Рис. 6.21. Окно Изменение связей

4) Установите флажок каскадное удаление связанных полей и нажмите кнопку ОК .

5) Еще раз запустите запрос на удаление.

Проверив записи в таблицах, вы можете убедиться, что удалены не только записи из таблицы Товары , но и зависимые записи из таблицы Заказы .

Анализ данных с помощью запросов

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

Для анализа данных используются статистические функции.

Сумма – суммирует элементы в столбце. Работает только с числовыми или денежными данными.

Среднее – вычисляет для столбца среднее значение. Столбец должен содержать числовые или денежные величины или значения даты или времени. Функция игнорирует пустые значения.

Число – подсчитывает количество элементов в столбце.

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

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

Стандартное отклонение – показывает, насколько значения отклоняются от среднего.

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

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

Составьте запрос, подсчитывающий количество товаров в таблице Товары .

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

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

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

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

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

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

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

...

Листинг 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.