СУБД MS Access 2003 (960526), страница 20
Текст из файла (страница 20)
83. Перекрестный запрос Продажа Авто по кварталам и двумяуровнями группировки по строкам (Модель->Филиал)Некоторые наиболее часто применяемые форматные символыприведены в табл. 47.Таблица 47СимволСDDdOddDdddDddddddddddwОписаниеАналог встроенного общего форматаДень месяца, 1-2 цифр (1-31)День месяца, две цифры (01-31)Первые две буквы дня недели (Пн - Вс)Полное название дня неделиТо же, что и Краткий формат даты Устроенны и)То же, что и Длинный формат даты (встроенный)День недели (1-7)132Проектирование баз данных.
СУБД MS AccessОкончание таблицы 47ОписаниеСимволWWmmmmmmmmmmqНомер недели в году (1-52)Месяц, 1-2 цифры (1-12)Месяц две цифры (01-12)Первые три буквы месяца (Янв - Дек)Полное название месяцаКварта! (1—4)Полный перечень форматов функции Format можно найтив справочной системе Access.9. Запросы на изменениеЗапросы на изменение позволяют создать новые таблицы и обновить данные в имеющихся таблицах. В Access имеется 4 типазапросов на изменение:1.Запросы на создание таблицы — это обычный запрос на выборку, с той лишь разницей, что результат запроса сохраняетсяв новой таблице, имя которой задается в начальном диалоге.На языке SQL это отличие выражается фразой INTO <Имя новой таблицы>.
Необходимость в создании новой таблицы возникает, когда требуется заранее сформировать нужный наборзаписей, который затем может быть использован для последующей обработки или передачи по каналу связи.2.Запросы на добавление используют полученные в выборке записи для добавления в какую-либо из имеющихся таблиц. Очевидно, что схема выборки должна соответствовать схеме таблицы-приемника.3.Запросы на удаление используют полученные в выборке данные для их удаления из таблицы-источника.4.Запросы на изменение заменяют одни значения в каких-либополях выбранных записей на другие, например: Увеличитьсумму заработной платы на 20 %.Тема 4.
Запросы - в центре внимания рынок сбыта1339.1. Проектирование запроса на создание таблицыРассмотрим пример конструирования запроса на создание таблицы, содержащей модели автомобилей, средняя цена продаж которых выше средней цены продаж всех моделей.Начальная стадия конструирования запроса аналогична описанному выше запросу на выборку:1. На вкладке Запросы окна БД выбираем режим Создать, далеев выведенном списке выбираем Конструктор - открываетсястандартное окно конструктора запроса на выборку.2.Добавляем в запрос дважды таблицу Продажа Авто (соединять таблицы не надо).3. Назначаем каждой таблице свой псевдоним (А1 и А2 соответственно), для этого откроем окно Свойства списка полей через контекстное меню и в этом окне в строке Псевдоним, последовательно переходя с одной таблицы на другую, вводимпсевдонимы.4.
Как обычно перетаскиваем нужные поля в нижнюю часть конструктора; предположим, нам потребуются поля Модель и ЦенаПродажи, которые мы выбираем из таблицы A I , а такжеполе, ЦенаПродажи, из таблицы А2. При этом первое полеЦенаПродаж будет использовано для вычисления среднейстоимости продаж для каждой модели в таблице А1, а второе для вычисления общей средней стоимости продаж всех моделей.5.Включаем режим Групповые операции через меню Вид или инструмент £ и в строке Групповая операция нижней половиныконструктора вводим значения: в поле Модель - Группировка,а в полях ЦенаПродажи - Avg (Среднее).6.Установим в строке Условие отбора поля А1.ЦенаПродажизначение >=Avg([A2].lЦенаПродажи]).7.Установим тип запроса Запрос на создание таблицы, используя меню или панель инструментов. При этом открывается окно для ввода имени создаваемой таблицы, в которое вводимимя ТДорогиеМодели (рис. 84).Проектирование баз данных.
СУБД MS AccessI.MРис. 84. Запрос на создание таблицы в режиме конструктора8.9.Сохраним запрос под именем ЗДорогиеМодели.Включаем режим Таблица для предварительного просмотрарезультатов выполнения запроса (рис. 85).модельНиеа-2235|Ауд-ЦвнаПрод1А¥д-ЦенаПрод122 000.00р.102 25000р1050Ю.ООр.102250ШвSELECT А1.МоАель, Avg(Al .ЦенаПродажн) Д5 [Avg-ЦенлПродажп], Дуд(Д2.Цеч4Прода«и) AS [йуд-ЦелгЛрода*и1; INTOТДорогиеМолвпнFROM ПродажаАвго AS A1, ГромжвАвто AS A2GROUP BY А! .МодельРис. 85.
Запрос на создание таблицы в режимах Таблица и SQL10. Включаем режим SQL (см. рис. 85) и изменяем в нем именаполей будущей таблицы, которые указаны после слова SELECTТема 4. Запросы - в центре внимания рынок сбыта135во фразе AS, на СредняяЦенаМодели и СредняяЦенаВсехМоделей соответственно. Если снова включить режим Таблица, тоувидим результат запроса с новыми именами полей (рис. 86).Рис. 86. Запрос на создание таблицы с новыми именами полейПосле закрытия запроса и его запуска по команде Открытьв окне БД будет создана таблица ТДорогиеМодели\ открыв еев режиме конструктора, мы увидим, что поля этой таблицы унаследовали типы соответствующих полей таблицы-источника.По большому счету поле СредняяЦенаВсехМоделей в полученной таблице является лишним, так как его значение во всех будущих строках будет одинаковым.
Поэтому в окончательном варианте запроса в режиме конструктора следует снять флажок Выводна экран для этого поля.9.2. Проектирование запроса на добавлениеЗапрос на добавление может быть сконструирован в двух вариантах: добавление одной записи и добавление множества записей.В первом варианте он позволяет добавить в любую таблицу БДединственную запись либо во все ее поля, либо только в те, которые являются обязательными для ввода (эти свойства задаютсяполям на этапе конструирования таблицы). Кроме того, добавитьзапись можно с клавиатуры или непосредственно с помощью констант.
Последний случай имеет смысл при добавлении с помощьюпрограммы, в которой производится вычисление добавляемыхзначений.Во втором варианте запрос на добавление строится как обычный запрос на выборку, с учетом того, что результат выборкибудет добавляться в таблицу-получатель. В этом случае при конструировании запроса на выборку следует обеспечить совместимость типов полей таблицы-источника с соответствующими типами полей таблицы-получателя.136Проектирование баз данных.
СУБД MS AccessДля примера рассмотрим запрос, с помощью которого в таблицу ТДорогиеМодели, созданную с помощью запроса ЗДорогиеМодели, добавим записи о моделях, средняя цена продаж которыхвыше, чем у модели «Москвич».Вначале сконструируем новый запрос на выборку, аналогичнозапросу Запроса! (можно воспользоваться им как шаблоном). Отличия будуг в том, что требуется ввести дополнительное условиеотбора для поля: Продажа Авто_1.Модель, Москвич*, что означает все модели с начальным названием «Москвич», а в окончаниичто угодно (символ *), т.
е. все похожие на «Москвич». Далее Access автоматически поставит операцию Like (рис. 87).iff ••>Г*"*:Гррпона операция:|Г&д?*аД|М5Добавпенне: МодельУспеете rnttjfA;Прода-аДвгоКс*Д"М1й"*^1Д-г-1Цен^д-.^Да*ДДбто_1№«*-№злегьVРис.
87. Запрос на добавление в режиме конструктора на стадииопределения таблицы-получателяПосле этого преобразуем этот запрос в запрос на добавление(как и ранее, через меню или панель инструментов), для чего выберем из списка имя таблицы ТДорогиеМодели и нажимаем кнопкуОК. Затем в появившейся строке конструктора Добавление выбираем в столбце Модель поле Модель, а в столбце ЦенаПродажи поле СредняяЦенаМодели.Запрос готов; посмотрев его в режиме таблицы, мы увидимсписок моделей со средней ценой продаж больше, чем у Москвича.Сохраняем запрос под именем ЗДобавипгьВДорогие. Вид запросана языке SQL и результат его работы показаны на рис. 88.Тема 4.
Запросы - в центре внимания рынок сбыта1М.)ij^Рис. 88. Запрос на добавление группы записей на странице SQLи результат его работыДобавить одну запись в какую-либо таблицу можно двумя способами.По первому способу можно воспользоваться классическим запросом на языке SQL:INSERT INTO [Предлагаемые модели] ([Код модели], Модель,[Мощность двигателя], Цвет, [Количество дверей])VALUES ('2111', 'ВАЗ 2111', 'Черный', 86, 4);Этот же запрос в режиме конструктора показан на рис. 89. Приэтом если снова переключиться в режим SQL, то увидим, ч го Access изменил вторую часть запроса и он теперь выглядит следующим образом:INSERT INTO [Предлагаемые модели) ( [Код модели], Модель,Цвет, /Мощность двигателя}, [Количество дверей])SELECT '2111'AS Выражение!, 'ВАЗ- 211Г AS Выражение2,'Черный' AS ВыражениеЗ, 86 AS Выражение^4 AS Выражение5;J Отекание .
.I Вывод BOSK nJ Уикалывл ;гписчПоле: Выра*ии«1' "2пСоргирсе^эДэбгвле-*.-: Код «оделиУсловие отйора:не>Т 1^*Быоажгкпегг "ВАЗ6ым*ен»еЭ: "ЧейВвО**(№«1; 86Выт-а*ея«5: 1Чой*льМоиность двг!ГЭ11Leai1коли-*:7вояв*ов<Рис. 89. Запрос на добавление одной записи в таблицуПредлагаемые модели>138Проектирование баз данных. СУБД MS AccessИ наконец, второй способ добавления одной записи предусматривает ввод значений полей с клавиатуры. При этом следуетсконструировать параметрический запрос на добавление, в котором параметрами будут вводимые значения.
Для этого необходимов предыдущем запросе вместо значений (после слова VALUES) записать в квадратных скобках приглашения на их ввод, например:VALUES ([Код модели],[Модель],[Цвет], [Мощность],}Дверей]).При запуске этого запросаВведите з н а ч е н и е параметрана экран выводится окно с заданКод моделиным в запросе приглашением длякаждого поля, в которое следуетввести нужное значение, потомнаживается клавиша [Enter].