Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Соединение таблиц для создания многотабличного запросаСодержание книги
Поиск на нашем сайте
Перед соединением таблиц необходимо четко представлять, какие поля связаны общими значениями. В режиме запроса по образцу выводятся четыре типа соединений: Внутреннее соединение (или эквисоединение) обычно используется при создании запросов на выборку. Результирующее множество запроса содержит записи одной таблицы, имеющие совпадающие значения в связанных полях другой (where поле1 = поле2). В большинстве случаев соединения основываются на уникальном значении поля первичного ключа в одной таблице и значениями поля внешнего ключа в другой таблице, если таблицы связаны отношением "один-ко-многим". Если в таблице "многие" записи с заданной величиной отсутствуют, то соответствующие записи таблицы "один" в результирующее множество не включаются. Access автоматически создает соединения между таблицами, если в них имеются поля с одинаковыми именами, одно из которых является ключевым, либо если соединение было задано в окне связей. Внешнее соединение используется для создания новой таблицы, которая содержит записи, исключая повторяющиеся, связанные поля которых совпадают. Внешнее соединение позволяет вывести данные одной из таблиц независимо от того, имеются ли соответствующие записи в другой таблице.
Соединения, в которых участвует по одному полю из двух разных таблиц, называются внутренними соединениями по одному полю. В большинстве реляционных баз данных такие соединения реализуются на основе отношений "один-ко-многим". При разработке базы данных, в которой предполагается использовать для всех запросов только внутренние соединения по одному столбцу, необходимо придерживаться следующих основных правил: Каждая таблица "один" должна иметь первичный ключ, совпадений значений которого не допускается в целях обеспечения целостности данных. Access автоматически устанавливает отсутствие повторений значений поля или полей первичного ключа в таблице. Отношение "многие-ко-многим", например, связь между таблицами "Заказы" и "Товары", реализуется на основе промежуточной таблицы (в данном случае таблицы "Заказано"), которая связана с одной таблицей отношением "один-ко-многим" (таблица "Заказы" с таблицей "Заказано"), а с другой таблицей отношением "многие-к-одному" (таблица "Заказано" с таблицей "Товары"). Повторяющиеся данные, там где это только возможно, необходимо извлечь в новую таблицу, имеющую первичный ключ, совпадений значений которого не допускается, и связать с таблицей, из которой эти данные были получены отношением "один-ко-многим". Чтобы однозначно определить извлеченные данные, часто требуется использовать первичный ключ, состоящий из нескольких полей, т. к. одно поле может включать повторяющиеся данные. Однако комбинация значений ключевых полей должна быть уникальной. Все соединения в базе данных "Борей", обозначенные линиями, которые соединяют имена полей, являются внутренними соединениями по одному полю, реализованные на основе отношений "один-ко-многим". В Access используются зарезервированные слова ANSI SQL-92 inner join для обозначения внутренних соединений, а слова left join или right join для указания внешних соединений. Типичным результатом использования запроса, основанного на внутреннем соединении, является множество имен клиентов и их адресов вместе с размещенными ими заказами. Например, может потребоваться создать простой отчет, в котором необходимо вывести имя клиента, номер и дату заказа, а также количество товара.
Задание 2.15. Построить запрос, в котором имеется внутреннее соединение одной таблицы с другой отношением "один-ко-многим", и связать имена клиентов с размещенными ими заказами: 1. Раскройте вкладку "Запросы" окна "База данных", а затем нажмите кнопку "Создать" для создания нового запроса. В появившемся диалоговом окне "Новый запрос" выделите элемент "Конструктор" и нажмите кнопку ОК. 2. Выберите таблицу "Клиенты" и нажмите кнопку "Добавить" чтобы добавить ее в запрос. Access отображает список полей таблицы "Клиенты". 4.Чтобы отыскать заказы, размещенные клиентом, выберите поле "Название" в таблице "Клиенты" и перетащите поле в строку "Поле" первого столбца бланка запроса. 5.Выберите поле "КодЗаказа" в таблице "Заказы" и перетащите поле в строку "Поле" второго столбца. Перетащите поле "ДатаРазмещения" в третий столбец. 6.Нажмите кнопку "Запуск" либо кнопку "Режим таблицы" для вывода результирующего множества запроса.
Создание запросов на выборку данных из таблиц с косвенными связями
Задание 2.16. Выведите в запросе данные косвенно связанных записей. 1. Вернитесь к последнему запросу или создайте новый, введя туда таблицу «Клиенты». 4. Access автоматически связывает таблицы "Заказы" и "Типы", соединяя промежуточные таблицы с помощью поля первичного ключа в одной таблице и поля внешнего ключа с идентичным именем в другой. Проанализируйте эквивалентную созданному запросу инструкцию SQL. Соединения таблиц задаются операцией inner join..on.... Косвенные соединения реализуются на основе выражения inner join...on...on...
Между двумя таблицами может быть задано несколько соединений. Например, допустим, что требуется вывести имена клиентов, у которых совпадают официальный адрес и адрес доставки. Адрес клиента хранится в поле "Адрес" таблицы "Клиенты", а адрес доставки — в поле "АдресПолучателя" таблицы "Заказы". Таким образом, необходимо сопоставить поля "КодКлиента" в обеих таблицах, а также поля "Адрес" и "АдресПолучателя". Для этого требуется использовать внутреннее соединение по нескольким полям.
Задание 2.17. Выведите имена клиентов, официальный адрес и адрес доставки которых совпадают. 2.Добавьте в запрос таблицы "Клиенты" и "Заказы". 3. Выберите в списке полей таблицы "Клиенты" поле "Адрес" и перетащите его на поле "АдресПолучателя" таблицы "Заказы". Это приводит к созданию соединения полей Адрес и АдресПолучателя. Линия, обозначающая связь, имеет с двух сторон точки, которые указывают на то, что соединение выполнено между полями, связь которых в схеме данных не задана, их имена не совпадают и они не являются первичными ключами. 7. Чтобы подавить вывод одинаковых строк, необходимо изменить значение свойства "Уникальные значения" в бланке свойств запроса. Для отображения бланка свойств нажмите кнопку "Конструктор", а затем кнопку "Свойства" на панели инструментов. Если заголовком бланка является строка "Свойства списка полей" или "Свойства поля", щелкните по пустому месту, чтобы вывести свойства запроса. Установить «Уникальное значение» на «ДА». Кроме того, можно щелкнуть правой кнопкой мыши по свободной области верхней части окна запроса и выбрать в контекстном меню команду "Свойства". 8. Нажмите на панели инструментов кнопку "Запуск". Результирующее множество не содержит повторяющихся записей. Обратите внимание на количество записей. 9. Перейдите в режим SQL. Обратите внимание на то, что ключевое слово distinct инструкции select исключает записи, которые содержат повторяющиеся значения в отобранных полях. Исследуйте как влияет изменение свойства запроса "Уникальные значения" и "Уникальные записи" на оператор DISTINCT SELECT-предложения.
|
||||
Последнее изменение этой страницы: 2017-02-22; просмотров: 331; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.153.240 (0.007 с.) |