СУБД MS Access 2003 (960526), страница 18
Текст из файла (страница 18)
Готовый запрос4. Выполнение запросаВыполнение запроса осуществляется одним из следующихспособов:• в строке пиктограмм активизируется пиктограмма табличногопредставления;•в меню Вид устанавливается опция Таблица;•в меню Вид устанавливается опция Сводная таблица',•в меню Вид устанавливается опция Сводная диаграмма;•из меню Запрос выбирается команда Выполнить;•посредством щелчка активизируется кнопка выполнениязапроса в панели инструментов (кнопка с восклицательнымзнаком).Тема 4.
Запросы - в центре внимания рынок сбыта119Для режимов Сводная таблица и Сводная диаграмма вначалебудет предложено сконструировать их. К этому очень удобномуинструменту анализа данных мы вернемся несколько позднее.Access отобразит на экране записи (динамический наборDynaset), которые были выбраны из соединения таблиц Клиентыи Предлагаемые модели в соответствии с заданными критериями(рис. 66).<цдыпдб.аи]Имя[Отчеств о]<Е анилин^[Почтовый здрд Почтовый ннд {[Нацеленный nj Дата заказаРис. 66. Результат выполнения запроса на выборку5.
Сохранение запросаВозможно, в будущем запрос придется повторять неоднократно, чтобы оценить изменение объемов заказов на данную модельавтомобиля на рынке сбыта в Москве. Чтобы не готовить проектзапроса всякий раз заново, его следует сохранить. Прежде всегоэто рекомендуется делать для сложных запросов, в которых содержится много полей, критериев и вычислений. Обратите внимание на то, что сохраняется не результат выполнения запроса,а только спецификация запроса.Из меню Файл выберите команду Сохранить и назначьте запросу уникальное имя, например Комби. Щелкните на кнопке ОК,и Access сохранит запрос в БД TOYOTA.6.
Редактирование запросаЕсли возникнет необходимость внести в проект запроса изменения, его следует маркировать в окне БД и щелкнуть на кнопкеКонструктор. Откроется окно проектирования запроса, в которомпользователь может внести необходимые изменения в определение запроса.Если одно из полей запроса желательно перенести в другуюпозицию, то следует выполнить щелчок в селекторной строке надподлежащим переносу полем. Маркированную колонку можно перетащить на новое место с помощью мыши.120Проектирование баз данных.
СУБД MS AccessДля вставки дополнительного поля в запрос перетащите егоиз списка полей таблицы в ту колонку спецификации, в которуюхотите вставить. Если в этой колонке уже находится какое-либополе, то оно, как и все последующие поля, будет сдвинуто вправо,чтобы освободить место для нового поля. Для удаления поля маркируйте его и нажмите клавишу [Del].7.
Другие дополнительные возможностизапроса на выборку> £ групповые операции•ГЦ] имена таблицНаиболее важными дополнительнымивозможностями запросов на выборку являются:•расширение списка полей (вычисления по горизонтали);•группирование записей;•вычисления по вертикали.d§* Свойства...Расширение списка полей (или просто расширение) - это специальная операция, позволяющая добавить к списку полей запросалюбое поле, которого нет в таблицах-источниках запроса.
В общемслучае это поле должно представлять собой любое выражение, построенное с использованием встроенных элементов Access: знаковопераций, функций, полей из любых таблиц или запросов БД, элементов управления любых объектов БД (например, форм). Для более быстрого и правильного построения выражения можно воспользоваться услугами построителя выражений (контекстное меню/пункт Построить или специальная пиктограмма с тремяточками внутри).При этом открывается окно Построитель выражения(рис.
67). Например, чтобы по Дате рождения вычислить Возраст, необходимо включить в список полей поле-выражение Возpacm:Year(Date()) - Уеаг(Дата рождения), где Возраст -имя нового поля в запросе, Year() - встроенная функция выделения годаиз даты. DateQ - встроенная функция считывания текущей датысистемы.Тема 4. Запросы - в центре внимания рынок сбыта121Рис. 67. Окно построителя выраженийГруппирование - это специальная операция, применяемая к результирующему множеству записей запроса на выборку.
Она заключается в том, что все записи делятся на группы с одинаковымизначениями поля группирования, далее для каждой группы формируется одна-единственная запись, которая и будет включенав окончательный результат запроса.Например, требуется узнать, какие цвета автомобилей представлены в нашей базе.
Чтобы реализовать такой запрос, необходимо, как обычно, открыть диалог конструктора запроса. Затемдобавить в него таблицу-источник требующихся данных (таблицаПредлагаемые модели) и отобрать из нее поле Цвет. Далее следуетустановить операцию группирования, для этого выбрать в менюВид пункт Групповые операции.
При этом в нижней половине окна конструктора (QBE) появляется строка Групповая операция,а в столбцах устанавливается значение Группировка. В результатепри запуске запроса мы получаем столько записей, сколько различных цветов есть в таблице Предлагаемые модели.Вычисления по вертикали - это такая возможность конструктора запросов, которая тесно связана с операциями группированияи расширения (вычисления по горизонтали), рассмотренными выше. Предположим, что в предыдущем примере необходимоне просто получить список цветов, но и вычислить количество автомобилей каждого цвета.
Чтобы осуществить такое вычисление,необходимо расширить список полей еще одним полем Цвет,в котором и будет реализовано нужное вычисление; для этогов строке Групповая операция в правой части этого щелкнуть левой122Проектирование баз данных. СУБД MS Accessкнопкой мыши и в развернувшемся списке выбрать агрегатнуюфункцию Count (рис. 68).-я' Запрос? : запрос на выборкуПопе:Имя таблицы:Групповая операция:Сортировка:Вывод на экран:Условие отбора:илиРис.
68. Окно построителя запроса на выборкуЧтобы задать имя добавляемому полю запроса, необходимоввести его в начале этого столбца в строке Поле и поставить разделитель двоеточие перед основным именем поля, например: Количество автомобилей:Цвет. Здесь Количество автомобилей это имя нового поля в запросе.Общий вид запроса и результат его выполнения показанына (рис. 69). При вычислениях по вертикали, как видно из списка,возможен и ряд других функций, например: наибольший (Мах),первый (First) и т. д.Рис.
69. Запрос с вычислениями по вертикали в режимеконструктора и в режиме таблицыТема 4. Запросы - в центре внимания рынок сбыта1238. Проектирование перекрестного запросаПерекрестный запрос позволяет представить в форме таблицыинформацию, которая обычно выводится в виде диаграммы илиграфика. При этом получаемая перекрестная таблица, в отличиеот обычной таблицы, в которой имена имеют только столбцы, состоит из именованных строк и столбцов, на пересечении которыхразмещается информация.При конструировании перекрестного запроса необходимо определить три компонента:•заголовки строк - поле, каждое уникальное значение которогообразует строку в результате запроса; таких полей может бытьнесколько;•заголовки столбцов - поле, каждое уникальное значение которого образует столбец в результате запроса; такое поле можетбыть только одно;•значение - поле, к которому применяется необходимая агрегатная функция и полученное значение размещается на пересечении соответствующей пары строки и столбца; такое полеможет быть только одно.Замечание.
Каждое поле может быть задано выражением,записанным как вручную, так и с помощью конструктора выражений.В качестве примера рассмотрим процесс конструирования перекрестного запроса на основе таблицы Авто (рис. 70, а), которыйможно сформулировать следующим образом: Получить суммупродаж автомобилей каждой модели в каждом филиале фирмыи общим количеством проданных автомобилей по каждой модели.То есть мы хотим узнать, насколько популярна каждая модельв каждом регионе.Вначале отметим, что построить перекрестный запрос можнокак вручную, в конструкторе, так и с помощью мастера. Чтобы построить запрос с помощью мастера, необходимо запустить процесссоздания нового запроса, в окне БД на вкладке Запросы выбратьрежим Создать. В открывшемся окне (рис.
71) выбрать пункт Перекрестный запрос и нажать клавишу ОК.; •;Проектирование баз данных. СУБД MS AccessШ Дето - таблицаКод•Модель1 SA3-210432 Моеквич-214.3 8АЗ-2104Э4 Ниеа-22355 ГАЗ-3510В Нивэ-22357 ВАЗ-2104Э3 ГАЗ-3510,ФилиалВладимирРязаньРязаньТулаРязаньТулаРязаньРязань. tJ@l?D[ ДатаПродажи | ЦенаПродажи)2001.200292 ОСЮ ДОр.22.02200280 000 ДОр.21.02.200295000,00р.1201 2002 100 000 ДОр.25.03 2002 120 000 ДОр.22 01 2002 ПО 000 ДОр.97 000 ДОр.13 ОД. 20021 1 02.2002 124 000,00р.ЗавНомер [*-'117738226677 s31245Б !ззэззз - 331569434343545454999999- ZJ~ ЛИ*Запись: _Н | Ч | Г>• \> |>*|из 63а1ei Продажа АнтонеренрестныйВладимирРязань92000,СОр192000,(Юр.ГАЗ-3510Москвич-214210 000,00р.Нива-2235Запись:Рис.