Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Группировка в итоговом запросеСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Наипростейший итоговый запрос суммирует все выбранные записи в одну строку результатов, как показано на рис. 7.8. В более сложном итоговом запросе применяется группировка для вычисления промежуточных итогов. Для корректного применения группировки следует помнить о том, что поле, которое вы используете, должно содержать много повторяющихся значений. Например, хорошо группировать клиентов по штатам, в которых они живут. Поскольку в каждом штате много клиентов, у вас получатся осмысленные промежуточные итоги. Глупо группировать клиентов по номерам социального обеспечения, поскольку в результате получится столько групп, сколько у вас клиентов. На рис. 7.9 показан итоговый запрос с применением группировки.
Рис. 7.9. Вверху: продукты сгруппированы по категории продукта. Внизу: результат — отдельная строка с итогами по каждой категории продуктов В итоговом запросе можно использовать многоуровневую группировку, вставив несколько полей со значением Группировка в ячейку Групповая операция. Но результаты могут оказаться неожиданными. Предположим, что вы группируете длинный список записей о продажах по наименованиям товаров и по именам клиентов. В результате вы получите отдельную группу для каждой комбинации "клиент — товар". В табл. 7.8 приведена часть результатов запроса, подобного описанному, в котором группируются записи из таблицы OrderDetails БД Boutique Fudge, а затем они сортируются по CustomerID. Таблица 7.8. Результаты запроса с многоуровневой группировкой
Таблица 7.8 (окончание)
Из этой таблицы видно, что клиент с номером 10 потратил в целом $432.12 на товар с номером 108 во всех заказах. Этот же клиент потратил $16.79 на товар с номером 134, $53.30 — на товар с номером 210 и т. д. (Вы можете взять эти данные и отсортировать их по коду товара ProductID, чтобы увидеть объемы продаж каждого товара для разных клиентов. У вас все та же информация, но анализировать ее можно по-разному.) Это результат, который вы хотели получить. Но ему недостает хороших промежуточных итогов. Было бы полезно узнать, сколько клиент с номером 10 потратил на каждый тип продукта и сколько он потратил всего. Но из-за жесткой табличной структуры итогового запроса получить такой результат невозможно. Если вы хотите увидеть эту разбитую на подгруппы информацию с промежуточными итогами, у вас есть две возможности. Можно использовать перекрестный запрос или запрос к сводной таблице - два улучшенных варианта подведения итогов, которые описаны в главе 9. Если же вас на самом деле интересует вывод вашей информации на печать, можно создать отчет, включающий многоуровневую группировку и итоги, как описано в части III. Объединения в итоговом запросе Итоговые запросы невероятно полезны, когда они комбинируются с объединениями (см. разд. "Запросы и связанные таблицы" главы 6) для получения связанной информации из нескольких таблиц. В БД Boutique Fudge таблица OrderDetails хранит отдельные компоненты каждого заказа. Вы можете сгруппировать эту информацию (как показано в предыдущем разделе) для поиска самых ходовых товаров или самых активных клиентов. Но, к сожалению, вы увидите только значения кодов клиентов и товаров, которые малоинформативны. Примечание Если у вас есть подстановка, определенная для полей ProductID и CustomerID, вы увидите описание из поля подстановки (например, наименование товара, имя и фамилию клиента). Эта информация немного полезнее, но, возможно, вы хотите извлечь дополнительные сведения — например, адрес клиента, описание товара и т. д. — находящиеся вне связанной таблицы.
Если вставить в запрос объединение или два, можно извлечь подчиненную информацию из связанных таблиц (таких как Customers, Products и Orders) и добавить ее в ваши результаты. На рис. 7.10 показан пример вычисления общей стоимости каждого заказа. Затем результаты отсортированы по коду клиента CustomerID. Рис. 7.10. Вверху: итоговый запрос можно усовершенствовать, дополнив его информацией из трех связанных таблиц: Customers, Orders и OrderDetails, для отображения списка сумм заказов, упорядоченных по клиентам. В запросе игнорируются заказы стоимостью меньше $25. Можно вставить условие отбора в поле DatePlaced, чтобы узнать, сколько потратили клиенты до нынешнего дня текущего года, сколько они потратили в прошлом году, на прошлой неделе и т. д. Внизу: результаты сгруппированы по OrderID и отсортированы по LastName и FirstName, что сохраняет хороший уровень детализации
Вы уже знаете достаточно для того, чтобы построить запрос, показанный на рис. 7.10. Выполните следующие действии: 1. Создайте новый запрос, выбрав Создание → Другие → Конструктор запросов (Create → Other → Query Design). 2. Вставьте нужные вам таблицы с помощью диалогового окна Добавление таблицы (Show Table) и затем щелкните мышью кнопку Закрыть (Close). В примере на рис. 7.10 используются таблицы Customers, Orders и OrderDetails. После добавления этих таблиц программа Access вставит линии объединения между ними на основе связей, установленных в вашей БД. 3. Выберите Работа с запросами | Конструктор → Показать или скрыть → Итоги (Choose Query Tools | Design → Show/Hide → Totals). У каждого поля появится ячейка Групповая операция. 4. Добавьте поля, которые хотите использовать, и затем в ячейке Групповая операция выберите для каждого поля подходящие группировку или итоговое вычисление. Поля можно выбирать из любых связанных таблиц. В данном примере применяются следующие поля. o OrderID — это поле используется для группировки результатов. Другими словами, вы хотите подытожить все записи в таблице OrderDetails с одинаковым значением поля OrderID. Для выполнения этой работы в ячейке Групповая операция выберите вариант Группировка. (Между прочим, неважно, какое поле вы выберите — OrderID в таблице OrderDetails или ГО в таблице Orders — они связаны.) o OrderTotal — это вычисляемое поле, использующее выражение [Price] * [Quantity] для перемножения двух полей из таблицы OrderDetails. В результате получится итог для отдельной строки заказа. Программа Access суммирует эти строчные итоги для получения общего итога, поэтому задайте в ячейке Групповая операция вариант Sum. В поле OrderTotal включено условие отбора >=25, скрывающее любые заказы с общей стоимостью ниже $25.
Примечание Этот трюк с группировкой немного странный, но широко применяется в итоговых запросах. Просто запомните, что программа Access создает самые маленькие доступные ей группы. Если вы хотите сгруппировать только по клиентам (так можно посмотреть, сколько потратил каждый клиент), нужно только удалить группировку в поле OrderID и установить ее в поле CustomerID. Или если вы хотите подсчитать объем продаж конкретного товара, удалите всю информацию о клиенте, сгруппируйте данные по полю ProductID и затем вставьте дополнительные поля из таблицы Products, которые вы хотите видеть на экране (например, ProductName и Description).
5. Теперь можно выполнить запрос. Параметры запроса Параметры запроса — секретное оружие программы Access. Они позволяют создавать сверхгибкие запросы за счет умышленного пропуска одной или нескольких порций информации. При каждом запуске запроса Access запрашивает у вас пропущенные значения. Эти недостающие значения и называют параметрами запроса. Обычно параметры запроса применяют в условиях отбора. Допустим, вы хотите вывести на экран список клиентов, живущих в конкретном штате. Можно создать целый набор запросов, таких как New York Customers, CaliforniaCustomers, Ohio Customers и т. д. Если вас на самом деле интересуют только несколько штатов, такой подход имеет смысл. Но если нужно работать с любым и каждым штатом, лучше создать один запрос, использующий параметр для задания штата. Когда запрос выполняется, вы в определенный момент вводите нужный штат. Для создания запроса с параметрами выполните следующие действия: 1. Создайте новый запрос, выбрав на ленте Создание → Другие → Конструктор запросов (Create → Other → Query Design). 2. Из диалогового окна Добавление таблицы (Show Table) вставьте нужные вам таблицы и щелкните мышью кнопку Закрыть (Close). Б данном примере используется таблица Customers. 3. Выберите Работа с запросами | Конструктор → Показать или скрыть → Параметры (Choose Query Tools | Design → Show/Hide → Parameters). На экране появится диалоговое окно Параметры запроса (Query Parameters).
Рис. 7.11. Можно определить столько параметров, сколько нужно. В окне задан один параметр, названный CustomerState и содержащий текст 4. Выберите имя и тип данных для вашего параметра (рис. 7.11). Вы можете использовать любое понравившееся вам имя (но не применяйте имя, которое используется для обозначения поля в вашем запросе). Тип данных должен соответствовать типу данных поля, для которого используется параметр. Тип данных задается выбором одного из вариантов в раскрывающемся списке. Самые распространенные варианты: Текстовый, Целый, Денежный и Дата/время. 5. Щелкните мышью кнопку ОК для закрытия окна Параметры запроса. Теперь можно ссылаться на параметр по имени так же, как вы ссылаетесь на поле в своем запросе. Например, можно добавить следующее условие отбора для поля State: [CustomerState] Убедитесь, что вы не забыли вставить квадратные скобки, чтобы программа Access знала, что вы не пытаетесь ввести фрагмент текста. Во время выполнения запроса Access откроет диалоговое окно Введите значение параметра (Enter Parameter Value) для ввода конкретного значения (рис. 7.12). Введите интересующий вас штат и щелкните мышью кнопку ОК. Программа использует ваше значение для отбора в поле State. Рис. 7.12. При каждом выполнении запроса можно ввести другой штат. В данном случае будут отобраны клиенты из штата Нью-Йорк Подсказка Несмотря на то, что такая возможность есть, лучше не применять несколько параметров в одном запросе. Когда запрос выполняется, программа Access отображает отдельное диалоговое окно Введите значение параметра для каждого значения. Если у вас несколько параметров, вам придется сопровождать выполнение запроса щелчками мышью в назойливых диалоговых окнах.
Практических решений, использующих запросы с параметрами, великое множество. Вы можете приспособить запрос о годовом объеме продаж для выполнения с выбранным вами годом. Можно сотворить аналогичное чудо и создать один запрос для отображения объема продаж за любой месяц. Однако параметры запроса не следует применять для решения повседневных задач, касающихся ввода данных (таких как обновление единственной записи о клиенте). Формы, которые вы начнете создавать в части IV, предоставляют гораздо больше возможностей для просмотра и корректировки информации. Глава 8 Запросы, обновляющие записи Запросы больше всего известны своей способностью отображать небольшие подмножества больших объемов информации. Этот тип запроса известен как запрос на выборку, и именно его вы изучали в предыдущих двух главах. Многие приверженцы Access не знают, что у запросов есть другое назначение. Их можно использовать не только для поиска информации, но и для изменения данных. Запросы, оказывающие более сильное действие, будь то удаление, обновление или добавление записей, называют запросами на изменение (action query). О запросах на изменение Запросы на изменение не так полезны как запросы на выборку, поскольку в них гораздо меньше гибкости. Идеальный запрос создается единожды и повторно используется снова и снова. Запросы на выборку соответствуют этому определению, поскольку часто требуется обзор данных одного и того же сорта (заказы прошлой недели, самые ходовые товары, размеры классов и т. д.). Запросы на изменение коварней, поскольку они вносят необратимые изменения. В большинстве случаев, изменение — одноразовое действие, поэтому нет оснований связываться с запросом, который повторно вносит одно и то же изменение повсеместно. И даже если какие-то данные нужно изменять регулярно (например, цены товаров или уровни складских запасов), задаваемые каждый раз реальные значения не одни и те же. В результате невозможно создать запрос на изменение, который бы вносил это изменение в автоматическом режиме. Прежде чем вы отложите эту главу и займетесь чем-то более интересным, важно рассмотреть некоторые ситуации, в которых применение запросов на изменение удивительно удобно. Запросы на изменение хороши, если у вас есть следующие типы задач. ■ Пакетные задачи, которые вы хотите выполнять многократно. Некоторые задачи могут повторяться регулярно. Если нужно копировать большое число записей из одной таблицы в другую, удалять порцию старых данных или обновлять поле статуса в группе записей, и такие задачи вы вынуждены выполнять снова и снова, запросы на изменение — замечательное, экономящее время средство. ■ Сложные или трудоемкие задачи, влияющие на большое количество записей. Любая таблица время от времени нуждается в незначительной реорганизации. Вы можете решить, что пора поднимать цены на 15% или вы установили, что все записи, связанные с клиентом 403, на самом деле должны указывать на клиента 404. Это одноразовые задачи, но они воздействуют на большое количество записей. Для того чтобы расправиться с ними, вам придется потратить много времени на исправление листа данных — или же можно создать новый запрос на изменение, который внесет исправление гораздо эффективнее. Когда запрос сделан, решите, удалять его или сохранить на случай, если вы захотите откорректировать его и повторно применить позже. § Задачи, зависящие от единственной порции информации, которую вы предоставляете при каждом выполнении запроса. Можно создать запрос на изменение, также содержащий параметры и позволяющий задавать важные значения каждый раз, когда выполняется запрос. (О параметрах запроса см. разд. "Параметры запроса " главы 7,) Используя параметры запроса, можно превратить относительно жесткий запрос (который удаляет конкретную запись) вболее гибкий (удаляющий любую выбранную запись).
|
||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 474; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.140.108 (0.009 с.) |