Запрос 2

Создание Запроса 2

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

Итоговые запросы позволяют производить вычисления по некоторому полю в группах записей. Для того, чтобы вы смогли задать параметры групповых операций, необходимо открыть бланк запросов по образцу и нажать кнопку Запрос 2 на панели инструментов Microsoft Access. В бланке запросов по образцу добавится дополнительная строка «Групповые операции», с помощью которой можно задать необходимые параметры. Здесь, в первую очередь, следует задать поля, по которым следует производить группировку. Это позволяет как бы объединить все записи с одинаковыми значениями в соответствующих полях в одну запись. Для остальных полей следует задать групповую операцию, которая будет произведена для всех записей в выделенных группах. К основным групповым операциям можно отнести суммирование (Sum), поиск минимального, максимального и среднего значений (Min, Max и Avg), определение количества записей (Count).

9. Для решения поставленной задачи, необходимо составить запрос, который будет выполняться на основе анализа полей «Название продукта» и «Стоимость9quot; составленного ранее (в п. 7) запроса. Группировку следует сделать по полю «Название продукта», а к полю «Стоимость9quot; следует применить операцию суммирования.

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

11. Измените предыдущие (создайте новые) запросы так, чтобы они показывали сведения не за весь период работы фирмы, а лишь за некоторое время (например, за последний год, месяц или день). (Используйте параметр «Условие отбора» в бланке запросов по образцу).

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

SELECT COUNT(*) FROM TEST

WHERE CITY = ‘INDIANAPOLIS’ AND LAST_NAME = ‘SMITH’;

Предположим, что Запрос1 выполнялся 20 секунд, а Запрос2 – 10 секунд. Поскольку Запрос2 был выполнен быстрее и при этом наиболее ограничительное условие было последним, то можно смело предположить, что оптимизатор обрабатывает выражение ключевого слова WHERE от конца к началу.

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

Полное сканирование таблиц

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

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

Когда и как избегать полного сканирования таблиц

Полного сканирования таблиц, очевидно, следует избегать, когда таблица имеет большие размеры. Например, полное сканирование таблицы будет проводиться тогда, когда читаемая таблица не имеет индекса, и в этом случае для извлечения данных потребуется немало времени. Со всеми достаточно большими таблицами следует использовать индексы. Для небольших таблиц, как уже говорилось, оптимизатор может принять решение не использовать индекс, даже если индекс имеется, и выполнить полное сканирование таблицы. Поэтому в случае небольших таблиц может быть вполне оправданным удаление индекса с целью получения дополнительного пространства для других объектов базы данных.

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

Вот список данных, которые следует индексировать.

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

Иногда полное сканирование таблицы оказывается более предпочтительным. Это касается небольших таблиц и запросов, возвращающих большой процент данных таблицы. Проще всего инициировать полное сканирование таблицы – не создавать для нее индексов вообще.

188.123.231.15 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам.

– Конец работы –

Эта тема принадлежит разделу:

Таким образом если определены типы объектов т е имена объектов и имена свойств объектов типы связей между объектами и связи между атрибутами. Операции над данными. Операции над данными это третья составляющая концептуальной схемы Операции над данными выражаются средствами языка.

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Запрос 2

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Понятие базы данных
К организации данных в системах автоматизированной обработки информации возможны два подхода: 1. Каждый пользователь системы создает наборы данных, необходимых для решения его задач, и пиш

Неоправданно большой расход памяти и уменьшение времени отклика системы при обработке излишне больших объемов данных.
-нарушение непротиворечивости данных, т.е. возникновение такой ситуации, когда в различных местах машинной памяти хранятся противоречивые данные. Возникновение противоречивости чрезвычайно опасно д

Уровни представления данных в БД
С БД работают люди, имеющие разный уровень компьютерной подготовки и разное представление о данных. Это — системные программисты, разрабатывающие автоматизированную систему и БД, ответстве

Языки баз данных
Основная часть СУБД, используемая программистом, это Язык Данных (ЯД). Существует следующие основные типы ЯД: ЯОД — язык описания данных, ЯМД — язык манипу

Логическая структура данных
Концептуальная схема БД содержит три составляющих: — логическую структуру данных, — ограничения, накладываемые на данные, — операции с данными. Основой концептуа

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

Сетевая модель данных
Сетевая модель данных позволяет отображать связи М:М. Обычно она представляет собой ориентированный мультиграф, вершинами которого являются объекты, а ребрами – связи между объектами. Вершины таког

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

Реляционная модель данных
Реляционная модель была предложена американским математиком Е. Коддом в 1970 г. Это единственная из моделей БД, основанная на специальном разделе математики — теории отношений. Благодаря математиче

СТУДЕНТ ПРЕПОДАВАТЕЛЬ
№ зач. кн. ФИО Группа Ср. балл ФИО_П Должность К

ПРЕДМЕТ
Наименование Часы Отчетность

СТУДЕНТ_ПРЕПОДАВАТЕЛЬ
М М Для данной схемы связь Изучаемый предмет будет установлена между таблицами СТУДЕНТ и ПРЕДМЕТ через таблицы СТУДЕНТ_ПРЕПО

Понятие отношения
Рассмотрим некоторые основные понятия теории отношений, необходимые для дальнейшего рассмотрения реляционной модели данных. Парой или упорядоченной парой

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

ПОСТАВЩИК ИЗДЕЛИЕ
П#. Имя поставщ. Город И# Наименование Вес П1

ПОСТАВКИ
П# И# Количество П1 И1 П1 И2

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

Контроль ссылочной целостности
Контроль ссылочной целостности обычно заключается в анализе содержимого ключевых полей связанных таблиц при выполнении операций ведения БД. При создании связи 1:М таблица, находящееся на с

Нормализация отношений реляционной БД
Отношения реляционной БД можно привести к такому виду, который обеспечил бы наилучшие свойства БД. Процесс приведения отношений к такому виду называется нормализацией. При р

Первая нормальная форма
Считается, что отношение находится в 1НФ, если значение каждого его атрибута не структурировано. Это означает, что на пересечении каждого столбца и каждой строки таблицы должно

ПОСТАВКИ2
П# И# Кол Имя поставщика Город Тариф П1 И1

ПОСТАВЩИК1 ПОСТАВКИ
П# Имя поставщика Город Тариф П1 П2 П3 Восход Заря Салют Тула Самара Т

Запросов к БД
Для полученной ранее модели данных, состоящей из трех нормализованных отношений ПОСТАВЩИК, ПОСТАВКИ, ДОСТАВКА составим запросы, запишем их в виде формул реляционной алгебры и получим результаты для

Запрос 1
Сообщить название фирмы-поставщика П1. Мы получим ответ на этот запрос, если из таблицы ПОСТАВЩИК выделим строку, содержащую сведения о поставщике П1. Это можно сделать, выпо

Запрос 3
Сколько изделий И2 поставляет фирма Заря? В этом запросе известными являются значения двух атрибутов: Имя поставщика = Заря и номер изделия — И2. Известные и ис

Запрос 4
Какие поставщики и по какому тарифу поставляют изделие И2? Известное данное (номер изделия П2) находится в таблице ПОСТАВКИ, а искомые данные (имя поставщика и тариф) — в таб

Язык, основанный на реляционной алгебре
Язык данных, основанный на реляционной алгебре, был предложен Коддом. Это теоретический язык, позволяющий манипулировать данными в реляционных БД. Этот язык в полном объеме пока не реализован в СУБ

Запрос 4
Какие поставщики и по какому тарифу поставляют изделия И2? SELECT ПОСТАВКИ И# = ‘И2’ GIVING TEMP1 JOIN TEMP1 AND П

Запрос 6
Удалить из отношения сведения о поставках изделия И2. ПОСТАВКИ MINUS <*, И2, *> Удалить кортежи отношения можно также с помощью оператора DELETE.

Язык запросов QBE
Язык SQL требует определенных навыков в составлении запросов и не может быть предложен пользователю- непрограммисту для общения с БД. Был разработан простой и наглядный графически-ориентированный я

Запрос 1
Сообщить название фирмы-поставщика П1. Поскольку известные и искомые данные хранятся в одной таблице ПОСТАВЩИК, нужно вывести образец для этой таблицы.

Запрос 2
Сколько изделий И2 поставляет фирма Заря? Для ответа на этот запрос необходимо использовать данные из двух таблиц. Для того чтобы указать системе, по каким столбцам устанавливается

Запрос 3
Какие изделия поставляются в количестве 200 или 300 единиц? ПОСТАВКИ П# И# Кол

Запрос 4
Какие изделия поставляются поставщиком П2 в количестве 500 единиц. Ответ: ПОСТАВКИ П# И# Кол

2. Запрос на выборку с вычисляемым полем «Запрос2 стоимость заказа»

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

Выполнение в MS Access 2007

Выполним команды Создание Запросы Конструктор запросов.

В диалоговом окне Добавление таблицы откроем вкладку Таблицы. По очереди выберем таблицы, которые будут использоваться в запросе (Жанры, Серия, Книги, Заказы, Строки заказа, Продавцы, Авторы)

Каждый раз нажимаем кнопку Добавить. Закроем окно Добавление таблицы.

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

Нижняя часть содержит бланк QBE (QuerybyExample — запрос по образцу), в котором вы определяете параметры запроса. Каждый столбец бланка соответствует одному из полей.

В строку Поле включите имена полей, используемых в запросе (Имя, Отчество, Фамилия, Название книги; № накладной; Дата покупки; Фамилия продавца; Цена; Количество)

Для этого установим курсор на имени выбираемого поля в верхней части окна Конструктора в соответствующей таблице, и дважды щелкнем ЛКМ (левой кнопкой мыши).

Создание вычисляемого поля

При использовании операторов для построения выражений условий отбора целесообразно пользоваться Построителем выражений, для вызова которого:

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

выполним команды Работа с запросами Конструктор Настройка запроса и щелкните по кнопке Запрос 2

в диалоговом окне Построитель выражений создадим выражение, определив имена полей

Стоимость заказа: Книги!Цена*[Строки заказа]!Количество

Заменим слово «Выражение 1» на Стоимость заказа, выражение примет вид:

Стоимость заказа: Книги!Цена*[Строки заказа]!Количество

Заполненный бланк запроса

Запрос 2

Чтобы увидеть результаты запроса1 выберем команду Вид — Режим таблицы

Запрос 2

Сохраните запрос с именем Запрос1 стоимость заказа.

3. Запрос «Запрос 3 на группировку»

Выполнение в MS Access 2007

Выполним команды Создание Запросы Конструктор запросов.

Добавим таблицы-Книги. Авторы

Добавим поля Имя. Отчество, Фамилия, Название

Для задания группировки Выделим поля и нажмем на кнопкуЗапрос 2.

Для расчета количества книг каждого автора в Поле Название, Групповая операция выбираем Count

Запрос в конструкторе

Запрос 2

Запрос 2

4. Запрос «Запрос 4_перекрестный »

Выполнение в MS Access 2007

На Создпние- Мастер запросов — Перекрестный запрос

Следовать шагам мастера

Доработаем запрос в конструкторе, как показано на рисунке

Перекрестный запрос в режиме Конструктора.

Запрос 2

Запрос 2

Запрос на добавление

Выполнение в MS Access 2007

Выполним команды Создание Запросы Конструктор запросов

Из меню выбираем Запрос 2Обновление

Добавим поле Цена, Обновление Цена + 10

Запрос в конструкторе

Запрос 2

Результатом запроса изменение всех записей и увеличение цены на 10

Создание отчетов.

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

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

Отчет по запросу Запрос2 стоимость заказа .

Выполнение в MS Access 2007

Выполним команды Объекты  Отчеты Создание отчета с помощью мастера.

Откроется окно мастера

В поле Таблицы и запросы из списка выберем запрос-Запрос 2 стоимость заказа. Нажмем кнопку Далее.

Откроется 2-ое окно мастера. Выбираем уровни группировки Имя,

Нажмем кнопку Далее.

Откроется 3-ое окно мастера. Выбор сортировки. Нажимаем итоги и с тавим галочки Sum-Количество и стоимость

Нажмем кнопку Далее.

Откроется 4-ое окно мастера. Выбираем вид макета – структура1.Нажмем кнопку Далее.

Откроется 5-ое окно мастера. Выбираем стиль – Деловой.

Откроется 6-ое окно мастера. Сохраняем запрос — Запрос2 стоимость заказа

Запрос 2

Отчет книги магазина

Запрос 2

Об ИТ из Канады

2.13. Объединение запросов

Допустим, что есть какая-то задача, которую вы не можете решить в один запрос. Например, допустим, что нужно выбрать из таблицы все записи, в которых в поле «vcName» указано имя Андрей, а в поле «vcSurName» указана фамилия Васильевич. При этом, если запись удовлетворяет и тому и другому условию, то она должна быть выведена в результате дважды. Как решить эту задачу? Если написать запрос:

То оба условия будут описаны верно, но в результате человек с именем и отчеством Андрей Васильевич попадет в результат только один раз, а нам надо два.

Проблема решается выполнением двух запросов. Сначала необходимо определить все записи с именем Андрей, а потом с отчеством Васильевич. Но это будет два набора результата. Как их объединить в один? Для этого между запросами нужно написать один из следующих операторов:

  • UNION – объединить результат, и если есть строки, одинаковые для обоих результатов, то вывести только одну строку.
  • UNION ALL – объединить результат и включить в него все строки, даже повторяющиеся в обоих наборах.

Для решения нашей задачи нужно использовать UNION ALL, чтобы ни одна строка не исчезла и если какая-то запись соответствует двум условиям, она должна попадать в результат дважды:

Как видите, это всего лишь два запроса, между которыми стоит ключевое слово UNION ALL. У объединения есть одно ограничение – сортировку надо указывать только во втором запросе. Если поставить оператор ORDER BY в первом запросе, то в результате вы получите ошибку. А если указать во втором, то сортироваться будет весь результат (обоих запросов) как одно целое.

Чтобы в результирующем наборе было видно, какая запись была получена первым запросом, а какая вторым, давайте добавим еще одну колонку к каждому из запросов, в которой будет отображаться текст с номером запроса:

Не все так красиво у оператора UNION. У него есть следующие ограничения в использовании:

  • Количество и типы полей должны быть одинаковыми.
  • Символьные поля должны иметь одинаковое число символов.

Подобные запросы очень эффективны, когда нужно обращаться к разным базам данных. Например, один запрос выбирает данные из базы данных Database1, а другой из Database2.

Если одного поля в одном из запросов нет, то его можно заменить. Например, допустим, что во втором запросе происходит обращение к таблице, в которой нет поля фамилии. Да, у нас обращение идет к одной и той же таблице, но мы просто представим такую ситуацию. Как можно решить проблему? Вместо поля можно указать какой-либо текст, например:

В данном примере, во втором запросе вместо поля фамилии указывается текст ‘Не найдено’. Для числового поля, вместо не существующего поля, конечно же, нужно указать число.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *