Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции_Саладаев.doc
Скачиваний:
55
Добавлен:
03.05.2015
Размер:
15.75 Mб
Скачать

Создание связей для запросов

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

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

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

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

Существует несколько типов объединений:

  1. Внутреннее объединение (равное).Это объединение создается по умолчанию и в результате - все записи с равными полями.

Если существуют записи без пары на другом конце связи. Например, в Клиенты-Заказы - клиент без заказов, или что еще реже заказ без клиента, то такие записи можно также найти, если при создании «Нового запроса» включить опцию «Записи без подчиненных».

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

Там 3 типа:

  1. объединение только тех записей, в которых связанные поля обеих таблиц совпадают- ВНУТРЕННЕЕ.

  2. Объединение всех записей из «Имя таблицы («один»)» и только тех записей из «Имя таблицы «многие»», в которых связанные поля совпадают.

  3. Объединение всех записей из «Имя таблицы («многие»)» и только тех записей из «Имя таблицы «один»», в которых связанные поля совпадают.

Пункты 2и3– называютсявнешними объединениями- соответственнолевымиправым.

Пустые значения различаются как NULL- неизвестно и “”- пустая строка- говорит о том, что «отсутствует».

Объединение в запросе двух копий одной таблицы (самообъединение).

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

В этом случае в конструкторе запроса таблица «Сотрудники» добавляется дважды.

При копии идет нумерация. Возможно более осмысленное название путем изменения свойства «Псевдоним» Alias (это никак не влияет на базовую таблицу).Теперь для построения запроса «Подчиненные» можно из «Сотрудники» взять имя, фамилию, должность, а из «Сотрудники_1» взять фамилию (и имя) начальника. Отображение можно сделать более понятным, если в свойстве «Подпись» вместо «Фамилия» задать «Начальник»

Использование в запросе автоподстановки для автоматического ввода данных

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

Условия, при которых возможна автоподстановка:

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

  • Со стороны «один» должен быть уникальный индекс (ключ или «Индексированное поле» со свойствами «Совпадение не допускаются» - «Да»).

  • В запрос берется поле со стороны «многие».

  • Значение, введенное в связанное поле на стороне «многие» уже должно присутствовать на стороне «один».