Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД Исмагилова пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
658.43 Кб
Скачать

6.2. Настройка свойств полей с результатами группировки:

  • вернитесь в режим конструктора и перейдите на поле «Ном» в бланке запроса;

  • «Вид | Свойства» или .

  • в появившемся окне «Свойства поля» на вкладке «Общие» определите свойство «Подпись» следующим образом: Кол-во фильмов;

  • не закрывая окна свойств, щелкните мышью на поле «Длит» в бланке запроса; в результате в окне свойств отобразятся свойства данного поля. Введите в свойство «Подпись» текст Сумм. длит.;

  • закройте окно свойств, нажав кнопку .

Выполните запрос и сохраните его под именем А6-1-1 (см. 1.5).

Запрос А6-1-2

Очистите бланк запроса (см. 3.13), поместите на него поля «Страна» и «Ном», установите сортировку поля «Ном» по убыванию.

Измените значение строки Группировка в поле «Ном» на Count. С помощью окна свойств определите значение свойства «Подпись» для поля «Ном»: Кол-во фильмов (см. 6.2).

Выполните запрос и сохраните его под новым именем А6-1-2 (см. 3.5).

Запрос А6-1-3

Очистите бланк запроса.

6.3. удаление таблицы из запроса: щелкните мышью на окне таблицы «Фильмы» в верхней части окна конструктора; «Запрос | Удалить таблицу».

Добавьте в запрос новую таблицу «Кассеты» (см. второе примечание к 3.1), поместите на бланк запроса ее поля «Ном» и «Длит».

Установите в строке «Групповая операция» для поля «Ном» вариант Count, а для поля «Длит» — вариант Sum. С помощью окна свойств определите свойство «Подпись» для полей запроса: «Ном» — Кол-во кассет, «Длит» — Сумм. длит. (см. 6.2).

Выполните созданный запрос и сохраните его под новым именем А6-1-3.

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

Запрос А6-1-4

Очистите бланк запроса.

В дополнение к имеющейся таблице «Кассеты» включите в запрос таблицу «Фильмы» (см. второе примечание к 3.1); при этом в окне конструктора запроса будут показаны не только окна таблиц, но и связи между ними.

Скройте строку «Групповая операция» на бланке запроса (см. второе примечание к 6.1).

Последовательно поместите на бланк запроса поля «Назв» и «ДатаЗап» из таблицы «Фильмы» и поля «Фирма» и «Длит» из таблицы «Кассеты»; установите сортировку поля «ДатаЗап» по возрастанию. Выполните созданный запрос и сохраните его под новым именем А6-1-4.

  • Благодаря имеющейся связи между таблицами «Фильмы» и «Кассеты», рядом с данными о каждом фильме будут указаны данные о той кассете, номер которой содержится в поле «НомКас» для этого фильма.

Запрос А6-1-5

Очистите бланк запроса.

Отобразите строку «Групповая операция» на бланке запроса (см. 6.1).

Последовательно поместите на бланк запроса поля «Ном», «Фирма» и «Длит» из таблицы «Кассеты» и поля «Ном» и «Длит» из таблицы «Фильмы»; установите сортировку поля «Ном» из . таблицы «Кассеты» по возрастанию.

Установите следующие значения в строке «Групповая операция»:

  • поля «Ном», «Фирма», «Длит» из таблицы «Кассеты»:Группировка;

  • поле «Ном» из таблицы «Фильмы»: Count;

  • поле «Длит» из таблицы «Фильмы»: Sum.

С помощью окна свойств определите свойство «Подпись» для полей из таблицы «Фильмы»: «Ном» — Кол-во фильмов, «Длит» — Сумм. длит. (см. 6.2).

Снимите флажок видимости с поля «Ном» (см. 3.11).

  • Поле «Ном» таблицы «Кассеты» должно присутствовать в запросе по двум причинам: во-первых, по нему проводится сортировка, во-вторых, по нему проводится группировка. Если удалить из запроса это поле, то при выполнении запроса будут объединены данные по однотипным кассетам (например, кассете типа «Sony-180» будет соответствовать единственная строка в таблице, и в этой строке будет указано суммарное число фильмов, записанных на всех кассетах этого типа).

Выполните созданный запрос и сохраните его под новым именем А6-1-5.

Запрос А6-1-6

Очистите бланк запроса.

6.4. Изменение типа запроса на «перекрестный запрос»: «Запрос | Перекрестный» или разверните выпадающий список кнопок и выберите вариант («Перекрестный»). В результате в бланке запроса появится новая строка «Перекрестная таблица»; кроме того, будет заблокирована возможность отключения строки «Групповая операция».

  • Для возврата к стандартному типу запроса «Выборка» следует выполнить команду «Запрос | Выборка» или выбрать вариант «Выборка» в списке кнопок.

Поместите на бланк запроса поля «Ном», «Фирма» и «Длит» из таблицы «Кассеты» и поля «Ном» и «Страна» из таблицы «Фильмы».

6.5. настройка элементов перекрестного запроса: установите следующие значения в строке «Перекрестная таблица»:

  • поля «Ном», «Фирма», «Длит» из таблицы «Кассеты»:Заголовки строк;

  • поле «Страна» из таблицы «Фильмы»: Заголовки столбцов;

  • поле «Ном» из таблицы «Фильмы»: Значение.

  • При создании перекрестного (табличного) запроса требуется указать одно или несколько полей для строк результирующей таблицы, одно поле для ее столбцов и одно поле для ее значений (находящихся на пересечении строк и столбцов результирующей таблицы).

В поле «Ном» таблицы «Фильмы» установите в строке «Групповая операция» вариант Count, для остальных полей оставьте прежнее значение: Группировка.

Выполните созданный запрос и сохраните его под новым именем А6-1-6.

  • В Access 2000/XP возможна ситуация, когда при выполнении запроса вместо названий стран в заголовках столбцов будет указан одинаковый текст «Кол-во фильмов». В этом случае вернитесь в режим конструктора, вызовите окно свойств поля «Ном», удалите текст «Кол-во фильмов» из свойства «Подпись», после чего сохраните запрос и закройте его. После повторного открытия запроса в заголовках столбцов появятся названия стран.

Запрос А6-1-7

Разработайте самостоятельно по аналогии с запросом А6-1-6.

А6-2. В существующей базе данных «Спорт» (см. упражнение А1-2) с помощью соответствующих запросов вывести следующие данные:

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

2) список всех стран с указанием количества спортсменов для каждой страны, отсортированный в порядке убывания количества спортсменов.

Указания к запросу А6-2-1

После включения режима группировки (см. 6.1) в поле «Страна» оставьте значение строки «Групповая операция» прежним (то есть равным Группировка), а в остальных полях («Перекл», «Кольца» и «Конь») измените значение строки «Групповая операция» на Avg (так обозначается вычисление среднего значения).

При выполнении запроса некоторые средние значения будут выводиться с большим числом знаков после запятой. Для того чтобы ограничиться выводом трех знаков после запятой, установите для полей «Перекл», «Кольца» и «Конь» свойство «Формат» равным 0,000 (см. 3.15 и 6.2).

А6-3. В существующей базе данных «Магазин» (см. упражнения Al-3, A5-4) с помощью соответствующих запросов вывести следующие данные:

1) количество клиентов, имеющих и не имеющих скидку;

2) таблицу со столбцами «АТС» и «Кол-во клиентов», содержащую список АТС и количество клиентов, имеющих телефонные номера от этих АТС (номер АТС определяется по первым двум цифрам телефонного номера);

3) таблицу со столбцами «Месяц» и «Кол-во клиентов»,позволяющую определить количество клиентов, родившихсяв каждом месяце;

4) список проданных товаров с указанием их наименования, фирмы, цены, фамилии покупателя, информации о наличии у него скидки и размера его оплаты за покупку (клиент без скидки оплачивает всю стоимость, клиент со скидкой оплачивает 90% стоимости). Отсортировать список по наименованиям товаров, а для одинаковых наименований — по названиям фирм;

5) список всех клиентов с указанием их фамилии, информации о наличии скидки, количества купленных товаров, суммарной стоимости покупок и суммарного размера оплаты (клиент без скидки оплачивает всю стоимость, клиент со скидкой оплачивает 90% стоимости). Отсортировать список по фамилиям клиентов;

6) список всех фирм-производителей с указанием количества проданных изделий каждой фирмы и их суммарной стоимости. Отсортировать список по названиям фирм;

7) таблицу, столбцы которой соответствуют различным видам товаров (поле «Наим» таблицы «Товары»), строки —различным клиентам (поле «ФИО» таблицы «Клиенты»), а на пересечении строк и столбцов указывается количество товаров данного вида, приобретенных данным клиентом;

8) таблицу, столбцы которой соответствуют различным фирмам-производителям (поле «Фирма»), строки — различным видам товаров (поле «Наим»), а на пересечении строк и столбцов указывается цена товара данного вида, произведенного данной фирмой.

Указания

Запрос А6-3-1

Разработайте данный запрос на основе таблицы «Клиенты», выполнив группировку по полю «Скидка» и применив к полю «Ном» группирующую операцию Count (см. 6.1). Заголовок поля «Ном» измените на следующий: Кол-во клиентов (см. 6.2).

Запрос А6-3-2

Данный запрос создайте на основе таблицы «Клиенты».

6.6. Извлечение подстрок из текстовых полей: в первый столбец бланка запроса поместите вычисляемое поле (см. 3.14),определив его в строке «Поле» следующим образом: АТС:Left([Тел];2). Данное выражение означает, что вычисляемое поле имеет имя «АТС» и содержит два первых символа поля«Тел» (эти символы определяют номер АТС).

  • Функция Left(S;N) возвращает N первых (то есть левых) символов строки S. Имеется также функция Right(S;N), возвращающая N последних (то есть правых) символов строки S, и функция Mid(S;K;N), возвращающая N символов строки S, начиная с символа номер К.

6.7.Отбор непустых данных: в строку «Условие отбора» поля«АТС» введите условие is Not Null (благодаря этому условию, в итоговой таблице не будут учитываться клиенты, не имеющие телефона — ср. с реализацией запроса АЗ-7-3).

Используйте режим группировки (см. 6.1), установив для поля «Ном» группирующую операцию Count.

Запрос А6-3-3

Разработайте данный запрос на основе таблицы «Клиенты», используя группировку по вычисляемому полю «Месяц» (см. 3.14), содержащему номер месяца из даты рождения клиента. Поле «Месяц» можно определить следующим образом: Месяц: Month([ДатаР])

Запросы А6-3-4 - А6-3-5

Запросы создайте на основе связанных таблиц «Клиенты», «Товары» и «Продажи».

6.8. использование условной функции IIF: последнее поле этих запросов, связанное с оплатой покупок (со скидкой или без скидки), является вычисляемым (см. 3.14); оно должно быть определено в строке «Поле» следующим образом: Оплата:iif([Скидка];[Цена]*0,9;[Цена])

  • При определении поля «Оплата» была использована функция iif с тремя аргументами: первый аргумент представляет собой логическое выражение (принимающее значение «Да» или «Нет»); если это выражение имеет значение «Да» (в нашем случае — если клиент имеет скидку), то функция возвращает значение своего второго аргумента (в нашем случае — цену товара, умноженную на 0,9); если же логическое выражение имеет значение «Нет», то функция возвращает значение своего третьего аргумента (в нашем случае — полную цену товара).

  • Объединение данных о товарах и купивших их клиентах обеспечивается, благодаря имеющейся связи между таблицами «Клиенты» и «Товары» (посредством вспомогательной таблицы «Продажи»).

Запросы А6-3-7 - А6-3-8

Используйте режим перекрестного запроса (см. 6.4—6.5).

А6-4. В существующей базе данных «Видео» (см. упражнения Al-1, A5-1) разработать запрос «Отбор по жанрам», в котором запрашивается жанр фильма, после чего выводится список названий фильмов этого жанра (поле «Назв» таблицы «Фильмы») с указанием кассет, на которых эти фильмы записаны (поля «Фирма» и «Длит» таблицы «Кассеты»). Список сортируется по названиям фильмов.

Решение

Откройте базу данных «Видео» (см. 2.1).

Создайте новый запрос, включив в него связанные таблицы «Фильмы» и «Кассеты» (см. 3.1); поместите на бланк запроса поле «Назв» из таблицы «Фильмы» и поля «Фирма» и «Длит» из таблицы «Кассеты» (см. 3.2). Установите сортировку поля «Назв» по возрастанию (см. 3.3).

6.9. определение параметра запроса: поместите на бланк запроса поле «Жанр» из таблицы «Фильмы», снимите в этом поле флажок видимости (см. 3.11) и введите следующий текст в строку «Условие отбора»: =[Жанр фильма:]

Теперь при выполнении запроса вначале возникает диалоговое окно «Введите значение параметра», в котором запрашивается жанр фильма (название жанра требуется набрать в поле ввода, после чего нажать [ОК]). После указания жанра формируется таблица, содержащая все фильмы этого жанра. Сохраните запрос под именем Отбор по жанрам (см. 1.5).

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

А6-5. В существующей базе данных «Спорт» (см. упражнение А1-2) разработать запрос «Отбор по баллам», в котором запрашивается количество баллов, после чего выводится список спортсменов, имеющих в упражнении на перекладине указанное или большее количество баллов (выводятся поля «Фам», «Страна», «Перекл»). Список сортируется по полю «Фам».

Указание

Используйте параметр [Количество баллов:] (см. 6.9) в условии отбора для поля «Перекл».

А6-6. В существующей базе данных «Магазин» (см. упражнения Al-3, A5-4) разработать запрос «Отбор по фирмам», в котором запрашивается имя фирмы-производителя, после чего выводится список клиентов, купивших товары данной фирмы (выводится поле «ФИО» таблицы «Клиенты» и поля «Наим» и «Цена» таблицы «Товары»). Список сортируется по фамилиям клиентов.

Указание

Используйте параметр [Фирма-производитель:] (см. 6.9) в условии отбора для неотображаемого поля «Фирма» из таблицы «Товары».