Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТУ_лаба №1.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
2.15 Mб
Скачать

З адание 2.15.

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

1. Раскройте вкладку "Запросы" окна "База данных", а затем нажмите кнопку "Создать" для создания нового запроса. В появившемся диалоговом окне "Новый запрос" выделите элемент "Конструктор" и нажмите кнопку ОК.

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

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

5.Выберите поле "КодЗаказа" в таблице "Заказы" и перетащите поле в строку "Поле" второго столбца. Перетащите поле "ДатаРазмещения" в третий столбец.

6.Нажмите кнопку "Запуск" либо кнопку "Режим таблицы" для вывода результирующего множества запроса.

Создание запросов на выборку данных из таблиц с косвенными связями Запросы можно использовать для вывода косвенно связанных записей, например для отображения категорий товаров, закупленных некоторым клиентом. В запрос следует включить каждую таблицу, которая служит звеном в цепочке соединений. Для рассматриваемого примера необходимо включить все промежуточные таблицы, соединяющие таблицу "Клиенты" с таблицей "Типы". Тогда в цепочку входят следующие таблицы: "Клиенты", "Заказы", "Заказано", "Товары" и "Типы". Однако добавлять поля этих таблиц в бланк запроса не требуется — достаточно полей "Название" и "Категория".

З адание 2.16.

Выведите в запросе данные косвенно связанных записей.

1. Вернитесь к последнему запросу или создайте новый, введя туда таблицу «Клиенты». 2. Удалите в режиме конструктора запроса все столбцы, исключая "Название". 3. Нажмите кнопку "Добавить таблицу" на панели инструментов либо выберите команду "Запрос, Добавить таблицу" и добавьте в запрос таблицы "Заказы", "Заказано", "Товары" и "Типы", а затем нажмите кнопку "Закрыть" диалогового окна "Добавление таблицы".

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

Проанализируйте эквивалентную созданному запросу инструкцию SQL. Соединения таблиц задаются операцией inner join..on.... Косвенные соединения реализуются на основе выражения inner join...on...on...

SELECT DISTINCTROW Клиенты.Название, Типы.Категория FROM Типы INNER JOIN (Товары INNER JOIN ((Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента) INNER JOIN Заказано ON Заказы.КодЗаказа = Заказано.КодЗаказа) ON Товары.КодТовара = Заказано.КодТовара) ON Типы.КодТипа = Товары.КодТипа;

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

Между двумя таблицами может быть задано несколько соединений. Например, допустим, что требуется вывести имена клиентов, у которых совпадают официальный адрес и адрес доставки. Адрес клиента хранится в поле "Адрес" таблицы "Клиенты", а адрес доставки — в поле "АдресПолучателя" таблицы "Заказы". Таким образом, необходимо сопоставить поля "КодКлиента" в обеих таблицах, а также поля "Адрес" и "АдресПолучателя". Для этого требуется использовать внутреннее соединение по нескольким полям.