Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Объединение таблиц в запросе

Поиск

Access делает удивительно легким объединение двух таблиц. Первый шаг — добавление обеих таблиц в ваш запрос, с помощью диалогового окна Добавление таблицы (Show Table).


Если в Конструкторе создается новый запрос, это окно появляется немедленно. Если вы работаете над уже созданным запросом, убедитесь, что вы в режиме Конструктора, щелкни­те правой кнопкой мыши окно и выберите в меню строку Добавление таблицы.

 
 

Если связь между таблицами уже определена (с помощью схемы данных, как описано в разд. "Определение отношения" главы 5, или созданием подстановки, как описано в разд. "Поиск в связанных таблицах" главы 5), программа Access использует эту связь для автома­тического выполнения операции объединения. Вы увидите на схеме линию, соединяющую соответствующие поля, как показано на рис. 6.17.

 

Рис. 6.17. Access автоматически соединяет поле CustomerlD в таблице Orders с полем ID в таблице Customers, основываясь на связи, определенной в БД

Если связь между двумя связанными таблицами еще не определена, возможно, это следует сделать до того, как создавать запрос (см. подробные инструкции в главе 5). Но если вы по каким-то непонятным причинам решили не создавать связь (может быть, про­ект БД был введен в эксплуатацию другим, менее сообразительным специалистом Access), вы можете задать объединение вручную в окне запроса. Для этого просто перета­щите мышью связанное поле одной таблицы на совпадающее поле в другой. Можно также удалить объединение, щелкнув правой кнопкой мыши линию объединения и выбрав команду Удалить (Delete).


Примечание

Если вы добавляете две несвязанные таблицы, программа Access пытается угадать связь, чтобы помочь вам. Если она находит поле с одинаковыми типами данных и именем в обеих табли­цах, она добавляет связь для этих полей. Подобное действие зачастую совсем не то, что вам нужно — например, у многих таблиц есть общее поле Код (ID). Однако если вы строго соблю­даете правила проектирования БД, приведенные в разд. "Шесть правил проектирования БД" главы 2, у связанных полей имена в разных таблицах слегка отличаются, например ID и CustomerID. Если программа все же предлагает несуществующую связь, просто удалите ее, преж­де чем выполнять нужное объединение.

 

 

На профессиональном уровне.

Сравнение: отношения и объединения

 

Важно понимать различия между отношением или связью и запросом с операцией объединения.

Отношение — постоянная связь между двумя таблицами, хранящаяся в БД. Когда создается отношение в БД, есть возможность включить режим обеспечения целостности данных: набора правил, препятствующих проникновению противоречивых данных в связанные таблицы (см. разд. "Целостность на уровне ссылок " главы 5).

Объединение — операция запроса, позволяющая соединять связанные данные из двух таблиц в одном результирующем наборе. Объединение не влияет на то, как вы вводите и редактируете объединенные данные в базовых таблицах.

Если отношение установлено, Access считает, что вы хотите использовать операцию объединения для связи этих таблиц в запросе — единственное действие, имеющее смысл.

После того как вы поместили две таблицы в окно Конструктора запросов и определили операцию объединения, можно выбирать нужные вам поля из обеих таблиц. Можно также добавить условия отбора записей и задать порядок их сортировки, как в запросе любого дру­гого типа. На рис. 6.18 показан пример запроса, использующего операцию объединения, а на рис. 6.19 — результат выполнения этого запроса.

 

Примечание

Если у вас две таблицы, легко забыть, что вы выводите на экран. Если объединяются таблицы Orders и Customers, а затем из каждой выбираются поля, что вы получите в результате: спи­сок заказов или список клиентов? Ответ прост — вы получаете список заказов, дополненный информацией о клиентах. Запросы со связанными таблицами всегда обрабатывают таблицу-потомок и берут дополнительную информацию из таблицы-родителя.

 

 

Примечание

При выполнении объединения вы видите повторяющуюся информацию. Если объединяются таблицы Customers и Orders, вы видите имя и фамилию самого активного клиента рядом с несколькими заказами. Но при этом правило запрета дублирующихся данных не нарушается. Несмотря на то, что сведения о клиенте появляются в нескольких местах на листе данных с ре­зультатами запроса, в таблице Customers они сохраняются всего один раз.

 

 

Когда вы связываете родительскую и дочернюю таблицы с помощью запроса с операцией объединения, то выполняете запрос, получающий все записи из дочерней таблицы, и затем добавляете дополнительную информацию из родительской таблицы. Страница в конце


 

 
 

Рис.6.18. Этот запрос отображает данные из таблиц Orders и Customers. Неважно, из какой таблицы первое поле – в любом случае вы создаете список заказов с дополнительными сведениями о клиентах. Обратите внимание на строку Имя таблицы (Table) (под строкой Поле), указывающую на таблицу, из которой в запрос попадает каждое поле

 

 
 

Рис.6.19. Вы легко можете при беглом просмотре увидеть, кто что заказал. Столбец ID содержит идентификационный номер заказа (хотя вы могли бы отобразить идентификационные номера как таблицы Customers, так и таблицы Orders)

 


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

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

 

 

Примечание

Когда используется несколько таблиц, всегда есть риск наличия одноименных полей в обеих таблицах. Такая возможность не страшна, если вы не собираетесь отображать эти поля в ва­шем запросе, но если это не так, возможны проблемы. Единственный способ различить по­ля — переименовать одно из них на листе данных с результатами запроса. Из примечания "Малоизвестная или недооцененная возможность, Переименование поля в запросе" в разд. "Определение вычисляемого поля" главы 7 вы узнаете, как это сделать с помощью вычисляе­мого поля.

 

 

На профессиональном уровне.



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 427; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.122.90 (0.011 с.)