Создание запроса на объединение

Конструкторне распознает некоторые редкие методы языка SQL. Их можно применить, только откорректировав команду SQL в Режиме SQL,и после внесения этих изменений вы больше не сможете просмотреть ваш запрос в Конструкторе(пока позже не удалите непод­держиваемое изменение).

Запрос на объединение (union query) — один из примеров запросов, временами очень по­лезных, но не поддерживаемых в Конструкторезапросов. Запрос на объединение объединя­ет результаты из нескольких таблиц и затем представляет их на общем листе данных.

По сути, запрос на объединение составляется из двух (или нескольких) отдельных за­просов на выборку. Тонкость заключается в том, что структура результатов всех запросов на выборку должна быть одинаковой. Таким образом, следует извлечь аналогичные столбцы из каждой таблицы в одном итом же порядке. Если вы выполнили все перечисленные требова­ния, остается только вставить слово union между двумя запросами.

Далее приведен запрос на объединение, который представляет список имен и фамилий, полученный из двух таблиц — Customersи Employees:

SELECT Customers.FirstName, Customers.LastName

FROM Customers


UNION

SELECT Employees . FirstName, Employees . LastName

FROM Employees

Этот запрос функционирует, несмотря на то, у таблиц Customersи Employeesразная структура. Но гораздо важнее то, что структура результатов запросов к обеим таблицам, в данном случае поля FirstNameи LastName,совпадает.

 

 

ПРИМЕЧАНИЕ

Создать запрос на объединение можно, даже если имена столбцов отличаются — если в таб­лице Employeesсодержатся столбцы с именами F_Nameи L_Name,запрос все равно будет выполняться. Программа Access просто использует имена столбцов из первого запроса при выводе результатов на лист данных.

 

 

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

Программа помещает запросы па объединение в группу Несвязанные объекты (Unrelated Objects) в области переходов и применяет для их обозначения пиктограмму, от­личающуюся от пиктограммы обычного запроса (рис. 6.14).

 

 

Примечание

Если в результатах запроса на объединение выявляются совпадения, на экран выводится одна копия. Это поведение можно изменить, если заменить слово UNION словосочетанием UNION ALL. В предыдущем примере этот шаг вызовет повторное отображение в объединенных ре­зультатах человека, являющегося и клиентом, и сотрудником.

 
 

Рис. 6.14. Запросы на объединение появляются в области переходов с другой пиктограммой. Две пересекающиеся окружности обозначают несколько наборов результатов, отображаемых совместно


Запросы на объединение — это хороший способ соединения двух аналогичных таблиц, которые были разделены из соображений производительности, безопасности или способа распространения. (См. в разд. "Подготовка вашей базы данных" главы 18 различные причи­ны деления одного набора данных на несколько разных таблиц.) Эти запросы неудобны для обработки отношений "родитель — потомок". Для этой задачи вам нужны запросы на вы­борку с объединением таблиц (join queries), описанные в следующем разделе.

 

 

Для тех, кто понимает.