Создание запроса на объединение
Конструкторне распознает некоторые редкие методы языка 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), описанные в следующем разделе.
Для тех, кто понимает.