Поиск несвязанных записей

 

Внутренние объединения — гораздо более распространенный тип объединений. Но внешние объединения позволяют создать, по крайней мере, один важный тип запроса: запрос, отслеживающий несвязанные записи (unmatched records).

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

Для выполнения такого запроса начните с запроса с внешним объединением, включающего все записи о клиентах. Затем добавьте один ингредиент: условие отбора, выбирающее записи без кода (ID) заказа. Технически это неопределенные (null) или пустые значения.

 

Рис. 6.21. В этом запросе сочетаются внешнее объединение и условие отбора, которому соответствуют только несвязанные записи о клиентах. Обратите внимание на то, что флажок Вывод на экран сброшен. Это сделано потому, что поле ID применяется в условии отбора, но в его присутствии на листе данных с результатами нет никакой необходимости

Рис. 6.22. В этом примере список продуктов усилен данными о категории продукта и сведениями о поставщике. Таблица Products — потомок как таблицы ProductCategories, так и таблицы Suppliers (поставщики), таким образом, данный запрос без усилий использует обе эти таблицы

 

Далее приведено нужное условие фильтрации, которое следует поместить в строке Условие отбора поля ID таблицы Orders:

IS   Null

Теперь, когда программа Access выполнит запрос, она включит только записи клиентов, не связанные с записями в таблице заказов. На рис. 6.21 показан этот запрос в Конструкторе.

 

 

Множественные объединения

 

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

 

Рис. 6.23. Если вы хотите выяснить, кто заказал каждый продукт, вам понадобится связанная таблица Orders, а затем придется перейти к связанной таблице Customers Даже если вы не хотите отображать какие-либо данные из таблицы Orders, вам все равно не обойтись без этого двухшагового процесса. На верхнем рисунке показан запрос, реализующий этот процесс, а на нижнем — результат, который вы получите после выполнения запроса

 

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

На рис. 6.22 показан пример, в котором у таблицы-потомка два родителя, способных внести некоторую дополнительную информацию.

Рис. 6.24. Вы видите, как определить список курсов, содержащий рядом с каждым курсом имя и фамилию преподавателя, ведущего курс. На верхнем рисунке показана нужная вам структура запроса, а на нижнем — результат

Иногда нужная вам информация находится в таблице, которая непосредственно не связана с основной таблицей запроса. Обратите внимание на таблицу OrderDetails, которую компания Boutique Fudge использует для перечисления всех товаров в заказе клиента. Сама по себе таблица OrderDetaits связана не с клиентом, заказавшим товары, а со связанной записью о заказе (см. разд. "Заказ товаров" главы 5, в котором обсуждается этот проект БД). Если вы хотите получить сведения о том, кто заказал каждый товар, следует добавить в запрос таблицы OrderDetails, Orders и Customers, как показано на рис. 6.23.

Множественные объединения незаменимы, если у вас есть отношение "многие-ко-многим" со связующей таблицей (см. разд. "Отношение "многие-ко-многим"" главы 5), как между преподавателями и курсами. Как вы помните из главы 5, музыкальная школа Cacophone Studios использует промежуточную таблицу для отслеживания назначений преподавателей для ведения конкретных курсов. Если вы хотите получить список учебных курсов, дополненный именем и фамилией преподавателя, ведущего курс, придется создать запрос с тремя таблицами: Classes, Teachers и Teachers_Classes (рис. 6.24).

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100