Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_raboty_042.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

Лабораторная работа № 5 запросы по нескольким таблицам и перекрёстные запросы

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

ЦЕЛЬ РАБОТЫ.

Научиться создавать запросы, основанные на нескольких таблицах, использовать основные типы соединений и

ЛАБОРАТОРНЫЕ ЗАДАНИЯ.

  1. Соединить таблицы в запросе.

  2. Разработать запрос, в котором имеется косвенная связь между таблицами.

  3. Создать в таблицах поля подстановок с помощью Мастера подстановок.

  4. Форматировать данные в результирующих множествах запросов.

  5. Получить статистические данные с помощью перекрёстных запросов.

1. Соединение таблиц для создания многотабличного запроса

В режиме запроса по образцу выводятся четыре типа соединений:

  • Внутреннее соединение (или эквисоединение) обычно используется при создании запросов на выборку.

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

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

  • Рекурсивное соединение связывает данные в одной таблице. Создание этого типа соединения выполняется путем добавления в запрос ко­пии таблицы (Access назначает псевдоним для копии) и связывания полей идентичных таблиц.

  • Соединение по отношению (или тэта-соединение) связывает данные некоторым отношением (это может быть любое отношение, исклю­чая равенство). Соединение по отношению выполняется с помощью предложения where, а не с помощью ключевого слова SQL join. Кроме того, в окне конструктора запросов соединения по отноше­нию не выводятся, также как они не отображаются в окне схемы данных.

1.1 Создание внутреннего соединения по одному полю

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

Все соединения в базе данных "Борей", обозначенные линиями, которые соединяют имена полей (см. рис. 1), являются внутренними соедине­ниями по одному полю, реализованные на основе отношений "один-ко-многим".

Чтобы построить запрос, в котором имеется внут­реннее соединение одной таблицы с другой отношением "один-ко-многим", и связать имена клиентов с размещенными ими заказами:

  1. Если база данных "Борей" открыта, закройте все окна, исключая окно "База данных", дважды щелкнув по кнопке "Закрыть" каждого откры­того окна. В противном случае загрузите базу.

  2. Раскройте вкладку "Запросы" (Queries) окна "База данных", а затем нажмите кнопку "Создать" (New) для создания нового запроса. В по­явившемся диалоговом окне "Новый запрос" (New Query) выделите элемент "Конструктор" (New Query) и нажмите кнопку ОК. Access ото­бражает диалоговое окно "Добавление таблицы" поверх пустого окна запроса.

  3. Выберите таблицу "Клиенты" и нажмите кнопку "Добавить" либо дважды щелкните по имени таблицы, чтобы добавить ее в запрос. Ac­cess отображает список полей таблицы "Клиенты".

  4. Дважды щелкните по имени таблицы "Заказы", а затем нажмите кноп­ку "Закрыть". Access добавляет список полей таблицы "Заказы", а так­же линию, обозначающую соединение полей "КодКлиента" двух таб­лиц (см. рис. 2). Соединение создается автоматически, т. к. поле "КодКлиента" является ключевым в таблице "Клиенты" и в таблице "Заказы" найдено поле с тем же именем (внешний ключ).

  5. Чтобы отыскать заказы, размещенные клиентом, выберите поле "Название" в таблице "Клиенты" и перетащите поле в строку "Поле" (Field) первого столбца бланка запроса.

  6. Выберите поле "КодЗаказа" в таблице "Заказы" и перетащите строку "Поле" (Field) второго столбца. Перетащите поле "ДатаЗаказа" в третий столбец (см. рис. 3).

  7. Нажмите кнопку "Запуск" (Run) либо кнопку "Режим таблицы" (Query View) для вывода результирующего множества запроса (см. рис. 4). Обратите внимание на то, что заголовками полей в созданном наборе записей являются подписи полей (включая пробелы), а не имена в таблице, в которых пробелы не допускаются.