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

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

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

Для вывода имен клиентов, официальный адрес и адрес доставки которых совпадают:

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

  2. Добавьте в запрос таблицы "Клиенты" и "Заказы", выбрав каждую из них в диалоговом окне "Добавление таблицы" и нажав кнопку "Добавить". Нажмите кнопку "Закрыть".

  3. Выберите в списке полей таблицы "Клиенты" поле "Адрес" и перета­щите его на поле "АдресПолучателя" таблицы "Заказы". Это приводит к созданию соединения полей Адрес и АдресПолучателя (рис. 10). Линия, обозначающая связь, имеет с двух сторон точки, которые ука­зывают на то, что соединение выполнено между полями, связь кото­рых в схеме данных не задана, их имена не совпадают и они не явля­ются первичными ключами.

  4. Перетащите поля "Название" и "Адрес" таблицы "Клиенты", а затем поле "АдресПолучателя" таблицы "Заказы" на бланк запроса.

  5. Задайте сортировку по возрастанию в столбце "Название".

  6. Нажмите на панели инструментов кнопку "Запуск". На рис. 11 по­казано результирующее множество запроса.

  7. Чтобы подавить вывод одинаковых строк, необходимо изменить зна­чение свойства "Уникальные значения" (Unique Values) в бланке свойств запроса. Для отображения бланка свойств нажмите кнопку "Конструктор", а затем кнопку "Свойства" (Properties) на панели ин­струментов, либо дважды щелкните по пустой области верхней части окна запроса (рис. 12). Если заголовком бланка является строка "Свойства списка полей" (Field List) или "Свойства поля" (Field Pro-

perties), щелкните по пустому месту, чтобы вывести свойства запроса. Кроме того, можно щелкнуть правой кнопкой мыши по свободной об­ласти верхней части окна запроса и выбрать в контекстном меню команду "Свойства" (Properties)

  1. По умолчанию свойство запроса "Уникальные записи" (Unique Values) имеет значение True (Да), а свойство "Уникальные значения" — False (Нет). Поэтому в инструкцию SQL, связанную с запросом, добавляется ключевое слово Access SQL distinctrow (рис. 8). Измените значе­ние свойства "Уникальные значения" на "Да". При этом вместо клю­чевого слова SQL distinct в инструкции SQL будет участвовать клю­чевое слово Access distinctrow. Нажмите кнопку "Свойства" для за­крытия бланка свойств.

  2. Нажмите на панели инструментов кнопку "Запуск". Результирующее множество не содержит повторяющихся записей (рис. 13).

  3. Выберите команду "Вид, Режим SQL" для вывода инструкции SQL (рис. 14). Обратите внимание на то, что ключевое слово distinct инструкции select исключает записи, которые содержат повторяю­щиеся значения в отобранных полях.

  4. Нажмите кнопку "Закрыть" для закрытия запроса и не сохраняйте его. В этом случае вы избежите хранения ненужного примера в базе данных. Для большинства заказов адрес клиента и адрес доставки совпадают, по­этому было бы лучше отыскивать заказы, для которых адреса различаются. Однако в Access нельзя создать такой запрос с помощью соединения по нескольким полям, т. к. в операции Access SQL inner join использовать оператор <> не допускается. Подробную информацию о выполнении сое­динения по неравенству смотрите ниже в разделе "Создание соединения по отношению".