Как объединить таблицы в access
Перейти к содержимому

Как объединить таблицы в access

  • автор:

Как объединить таблицы в access

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

Способы объединения таблиц в представлении

Так же как и в запросах в базе данных Access, можно создавать разные типы объединений таблиц:

  • внутренние, когда из обеих таблиц отбираются только те записи, у которых совпадают значения связанных полей;
  • внешние, когда в одной из таблиц выбираются все записи, а в другой — только связанные.

Существует три типа внешних объединений:

  • левое внешнее объединение, когда выбираются все строки из левой таблицы;
  • правое внешнее объединение, когда выбираются все строки из правой таблицы;
  • полное внешнее объединение, когда выбираются строки из обеих таблиц.

По умолчанию используется внутреннее объединение таблиц. Если нужно изменить тип объединения, щелкните правой кнопкой мыши по линии связи (удобнее всего по ромбику в центре связи) и выберите соответствующую команду в контекстном меню. В представлении «Products by Category» (Товары по типам) (см. рис. 17.36) это будут команды:

  • Выделить все строки с Categories (Select All Rows from Categories);
  • Выделить все строки с Products (Select All Rows from Product).

Или можно выбрать из контекстного меню команду Свойства (Properties) и открыть диалоговое окно Свойства (Properties) .

Флажки в группе Включить строки (Include rows) позволяют установить любой тип внешнего соединения между таблицами. При изменении типа соединения меняется значок на связи — дополняется ромб справа или слева до квадрата.

6. Запросы MS Access

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

Все запросы делятся на запросы-выборки и запросы-действия.

После выполнения запроса-выборки СУБД создает виртуальную таблицу, в которую заносит выбранную информацию и хранит ее до тех пор, пока сгенерированная таблица не будет закрыта. Когда этот запрос закрывается, полученная таблица уничтожается, освобождая занимаемую память.

В отличие от запроса-выборки, запрос-действие вносит изменения в существующие данные. При помощи запроса-действия можно автоматически создать новую таблицу, внести данные в уже имеющуюся таблицу, а также удалить или изменить какой-либо набор записей из существующей таблицы.

Любой вновь создаваемый запрос в MS Access автоматически считается запросом-выборкой. В том случае, когда пользователю или разработчику нужно получить запрос-действие, следует специально это указать. Это помогает избежать случайных действий с данными, которые нельзя отменить.

Фактически, запрос в MS Access является инструкцией на языке SQL (Structured Query Language), который является на сегодняшний день основным средством составления запросов в наиболее распространенных реляционных СУБД. Посредством механизма SQL становится возможным как обращаться к содержимому баз MS Access из других приложений (в том числе и приложений от других производителей), так и получать данные для MS Access из внешних приложений, поддерживающих SQL.

Запросы в MS Access доступны в трех режимах: табличном, в котором запрос выглядит так же, как обычная таблица, режиме конструктора, где запрос предстает в виде схемы связанных объектов, и в виде инструкций SQL.

6.2. Краткие сведения об SQL

Структурированный язык запросов (Structured Query Language) — это язык запросов, ориентированный специально на реляционные базы данных. SQL был разработан в 70-е годы фирмой IBM и стандартизован ANSI (American National Standards Institute). Поэтому его часто также называют ANSI-SQL. Одно из достоинств SQL — его широкое распространение. При этом следует помнить, что на различных СУБД диалект SQL может отличаться от стандарта ( ANSI SQL89 и ANSI SQL92). Диалект SQL, используемый в MS Access, называется Jet SQL.

Небольшой набор команд SQL и определенный синтаксис составления выражений позволяет совершать сколь угодно сложные операции. Самой распространенной из них является выборка связанных данных из одной или нескольких таблиц при помощи оператора SELECT, однако в случае необходимости SQL может вносить информацию, корректировать хранящиеся записи и создавать новые объекты базы данных. SQL применяется не только в MS Access, но и во всех современных СУБД.

SQL-запросы построены на лексическом диалекте, основанном на семантике обычного языка (английского). При создании языка предполагалось, что конструкцию на нем сможет написать любой неподготовленный пользователь, руководствуясь исключительно своими потребностями и исходя из существующей структуры данных. Среди базовых инструкций, на которых основываются запросы, стоит выделить следующие наиболее распространенные команды:

  1. SELECT — предназначается для выборки из базы данных набора записей, соответствующих указанному критерию. В качестве входных параметров инструкции передаются названия полей таблиц, которые должны быть внесены в результирующий набор.
  2. UPDATE — служит для редактирования записей (одной или нескольких). Пользователь указывает названия полей таблиц и их новые значения.
  3. DELETE — инструкция, полностью удаляющая из базы данных все указанные записи (а не только значения отдельных полей).
  4. CREATE — позволяет создавать новые объекты базы данных.

Вспомогательные конструкции языка, например, WHERE задает критерий уточняющего поиска среди отобранных записей.

В языке запросов, реализованном в Microsoft Access, поддерживаются четыре дополнительных расширения: TRANSFORM (позволяет строить перекрестные запросы), IN (создание связи с удаленной базой данных), DISTINCTROW (определение запроса-объединения с потенциальной возможностью объединения данных), WITH OWNER-ACCESS OPTION (позволяет создавать специализированные запросы, которые может выполнять пользователь, не имеющий права доступа к таблицам, которыми оперирует данный запрос). В качестве функции могут быть использованы итоговые функции SQL, например такие, как AVG, COUNT, MAX, MIN, STDEV, STDEVP, SUM, VAR или VARP. Кроме того, в качестве функции могут применяться встроенные функции MS Access и встроенного языка VBA.

6.3. Создание запросов

Для того чтобы создать запрос-выборку, нужно перейти на вкладку «Запросы» в окне базы данных и нажать кнопку «Создать», в результате откроется диалоговое окно, представленное на рисунке 6.3.1.

Создание нового запроса

При создании запроса с помощью Конструктора разработчику необходимо выбрать таблицы или запросы, содержащие нужные данные и заполнить бланк запроса. Бланк запроса расположен в нижней части окна конструктора и содержит описание запроса в табличной форме (см. рисунок 6.3.2). Этот вариант следует выбирать для создания запроса «с нуля» в режиме конструктора.

Режим конструктора для запроса

Каждая колонка в бланке запроса соответствует одному полю. Строки «Поле» и «Имя таблицы» содержат списки, которые позволяют определить нужное поле. Таблица бланка запросов расширяется вправо автоматически при добавлении в запрос новых полей. Контекстное меню, связанное с бланком запроса, позволяет скрывать или, наоборот, показывает строки «Имя таблицы» и «Групповая операция». Под «Групповой операцией» понимается обработка и обобщение значений данного поля при помощи определенной функции (Например функция «Count» позволяет подсчитать число записей).

Если воспользоваться вариантом Простой запрос, то откроется диалоговое окно Мастера простых запросов, в котором следует выбрать участвующие в запросе поля из любых таблиц или запросов, входящих в базу данных. В последнем диалоговом окне Мастера пользователю предлагается выбор выполнить запрос или просмотреть его структуру в режиме конструктора. Основное преимущество этого способа заключается в том, что Мастер автоматически заполняет бланк запроса ). Если полученный запрос не соответствует требованиям, в него можно внести изменения в режиме конструктора.

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

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

Если нужно найти среди всех записей базы данных те, которые не имеют подчиненных, следует выбирать вариант, «Записи без подчиненных». Например, это достаточно типовая ситуация для любой базы данных, фиксирующей торговые операции по конкретным клиентам или по конкретным товарам. Незачем хранить информацию по конкретной поставке товара, если сам товар уже давно продан. Также незачем хранить в списке «постоянных клиентов» фамилии тех людей, которые уже длительное время не осуществляли никаких покупок. Очевидно, что чем меньше записей приходится просматривать, тем быстрее работает вся СУБД.

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

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

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

Для определения вычисляемого поля можно использовать встроенные функции MS Access или выражения, создаваемые пользователем. Для каждого вычисляемого поля следует выбрать одно выражение. Выражения, определяющие вычисляемые поля, создаются с помощью мастера простых запросов или вводятся пользователем в строку «Групповая операция» бланка запроса, в которой допускается выбор статистических функций для выполняемых над полем вычислений. В бланке запроса задают также условия отбора, с помощью которых определяются группы, для которых вычисляются итоговые значения, записи, включаемые в вычисления, или результаты, отображаемые после выполнения расчетов.

Для расчетов с использованием формул, определяемых пользователем, требуется создать новое вычисляемое поле прямо в бланке запроса. Вычисляемое поле создается с помощью выражения, которое вводится в пустую ячейку «Поле» в бланке запроса. Результаты вычислений не обязательно должны отображаться в поле. Вместо этого, их можно использовать в условиях отбора для определения записей, которые выбираются в запросе, или для определения записей, над которыми производятся какие-либо действия.

6.4. Условия отбора записей

Условия отбора записей могут задаваться для одного или нескольких полей в строке «Условие отбора»бланка запроса (см. рисунок 6.3.2). Условием отбора является выражение, которое состоит из операторов сравнения и операндов, используемых для сравнения. В качестве операндов выражения могут использоваться: литералы и константы.

Литералом называют значение в явном представлении, например, число, строковое значение или дату. Примерами значений в явном представлении могут служить «Москва», 100 и #1-янв-94#. Даты необходимо заключать в символы (#), а строковые значения в прямые кавычки («).

Константа представляет не изменяющееся значение. True, False, Истина, Ложь и Null являются примерами констант, автоматически определяемых в MS Access. Допускается также использование подстановочных знаков, представленных в следующей таблице.

Знак

Пример

Использование

Оператор BETWEEN. AND определяет принадлежность значения выражения указанному диапазону

Оператор IN проверяет, совпадает ли значение выражения с одним из элементов указанного списка, который задается в круглых скобках.

Оператор AND требует одновременного выполнения всех выражений, которые он соединяет.

Оператор OR требует выполнения хотя бы одного из тех выражений, которые он соединяет.

Оператор NOT требует невыполнения того выражения, перед которым он стоит.

Примеры определения диапазонов значений с помощью операторов представлены в следующей таблице

Пример выражения

Описание

Еще одним встроенным элементом поиска нужной информации в Access являются функции. Функция возвращает значение, которое является результатом расчетов или выполнения других операций. В Microsoft Access определен ряд встроенных функций, например:

функция Sum возвращает сумму набора значений поля; функция Avg вычисляет арифметическое среднее набора чисел, содержащихся в указанном поле запроса; функция Count вычисляет количество записей, возвращаемых запросом.

6.5. Запросы-действия

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

Запрос на удаление -удаляет группу записей из одной или нескольких таблиц. С помощью запроса на удаление можно удалять только всю запись целиком, а не отдельные поля внутри нее.

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

Запрос на добавление— добавляет группу записей из одной или нескольких таблиц в одну или несколько других.

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

При работе с запросом в режиме конструктора можно преобразовать существующий запрос к одному из этих четырех типов. Для это следует выбрать тип запроса из меню » Запрос» (см. Рисунок 6.5.1).

Меню

При преобразовании запроса к другому типу состав строк бланка запросов соответствующим образом меняется. В двух типах запросов «Создание таблицы» и «Добавление» MS Access выводит диалоговое окно для получения дополнительной информации перед переходом в режим конструктора.

Пользователь может открыть в режиме конструктора различные запросы: запрос на выборку, перекрестный запрос и запрос на изменение. Запрос на выборку и перекрестный запрос также можно открыть в режиме таблицы для просмотра результатов. Запрос на изменение нельзя открыть в режиме таблицы. Однако в этом режиме можно выполнить предварительный просмотр данных, которые будут задействованы в запросе на изменение. Такой запрос отличается тем, что в окне базы данных рядом с его именем стоит восклицательный знак (!).

6.6. Запросы SQL

Запрос SQL — это запрос, создаваемый при помощи инструкций SQL. Примерами запросов SQL могут служить запросы на объединение, запросы к серверу, перекрестные и подчиненные запросы.

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

Запрос к серверу — отправляет команды непосредственно в базы данных ODBC, например Microsoft SQL Server, причем используются только команды, поддерживаемые данным сервером.

Запрос управление создает или вносит изменения в объекты базы данных, такие как таблицы Microsoft Access или Microsoft SQL Server.

Просмотр объединенных результатов нескольких запросов с помощью запроса на объединение

Иногда может потребоваться добавить записи из нескольких таблиц или запросов в один список. Для этого в Access можно использовать запрос на объединение.

Чтобы хорошо понимать запросы на объединение, нужно уметь создавать базовые запросы на выборку в Access. Подробнее о них читайте в статье Создание простого запроса на выборку.

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

Если вы никогда не создавали запросов на объединение, начните с изучения рабочего примера в шаблоне «Борей» Access. Вы можете найти ее на начальной странице Access, выбрав Файл > Создать, или скачать с этого сайта.

Когда Access откроет базу данных Northwind, закройте появиющуюся форму диалогового окна входа, а затем разверните область навигации. Щелкните верхнюю часть области навигации и выберите Тип объекта , чтобы упорядочить все объекты базы данных по их типу. Затем разверните группу Запросы , и вы увидите запрос с именем «Транзакции продукта«.

Запросы на объединение легко отличить от других объектов запросов, так как они помечены специальным значком, который напоминает два пересекающихся круга (он символизирует объединение двух множеств):

Снимок экрана: значок запроса на объединение в Access.

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

Чтобы продолжить изучение этого примера запроса объединения, щелкните Главная > Представления > представление SQL , чтобы просмотреть синтаксис SQL, который его определяет. На этом рисунке мы добавили некоторые дополнительные интервалы в SQL, чтобы вы могли легко видеть различные части, составляющие запрос на объединение.

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

Изучим синтаксис SQL этого запроса на объединение из базы данных «Борей» подробнее:

SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity] FROM [Product Orders] UNION SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity] FROM [Product Purchases] ORDER BY [Order Date] DESC;

Первая и третья части этой инструкции SQL по сути являются запросами на выборку. Эти запросы получают два разных набора записей: из таблицы Заказы на товары и из таблицы Закупки товаров.

Вторая часть инструкции — ключевое слово UNION, которое указывает, что запрос будет объединять эти два набора записей.

Последняя часть с инструкцией ORDER BY определяет порядок объединенных записей. В этом примере все записи будут упорядочены по полю «Дата размещения» в порядке убывания.

Примечание: Запросы на объединение всегда доступны только для чтения; вы не сможете изменить никакие значения в режиме таблицы.

Создание запроса на объединение путем объединения запросов на выборку

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

Вы можете пропустить эти инструкции и просмотреть видео с примером в следующем разделе (Пример создания запроса на объединение).

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
  2. Дважды щелкните таблицу с полями, которые нужно включить. Таблица будет добавлена в окно конструктора запросов.
  3. В окне конструктора запросов дважды щелкните поля, которые нужно включить. При выборе полей убедитесь, что добавляется такое же число полей и в таком же порядке, как при добавлении в другие запросы на выборку. Уделите особое внимание типам данных полей, и убедитесь, что они совместимы с типами данных полей в таких же положениях в других объединяемых запросах. Например, если сначала был выбран запрос с пятью полями, первое из которых содержит дату и время, убедитесь, чтобы в других объединяемых запросах на выборку также было по пять полей, первое из которых содержит дату и время, и т. д.
  4. Дополнительно к полям можно добавить условия, введя соответствующие выражения в строке «Условия» сетки полей.
  5. После добавления полей и их условий выполните запрос на выборку и проверьте его выходные данные. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
  6. Переключите запрос в конструктор.
  7. Сохраните запрос на выборку и не закрывайте его.
  8. Повторите эту процедуру для всех запросов на выборку, которые необходимо объединить.

Теперь следует объединить созданные запросы на выборку. На этом этапе нужно создать запрос на объединение, скопировав и вставив инструкции SQL.

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
  2. На вкладке Конструктор в группе Тип запроса щелкните Объединение. Access скроет окно конструктора запросов и отобразит вкладку объекта в режиме SQL. На данном этапе эта вкладка будет пуста.
  3. Щелкните вкладку первого запроса на выборку, который вы хотите добавить в запрос на объединение.
  4. На вкладке Главная нажмите кнопку Режими выберите Режим SQL.
  5. Скопируйте инструкцию SQL для запроса на выборку. Щелкните вкладку запроса на объединение, который вы начали создавать ранее.
  6. Вставьте инструкцию SQL для запроса на выборку на вкладку объекта в режиме SQL.
  7. Удалите точку с запятой (;) в конце инструкции SQL для запроса на выборку.
  8. Нажмите клавишу ВВОД, чтобы переместить курсор на строку ниже, и введите в новой строке слово UNION.
  9. Щелкните вкладку следующего запроса на выборку, который необходимо добавить в запрос на объединение.
  10. Повторите действия 5—10, пока не будут скопированы и вставлены все инструкции SQL для запросов на выборку в окне режима SQL запроса на объединение. Не удаляйте точку с запятой и не вводите ничего после инструкции SQL в последнем запросе на выборку.
  11. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результаты запроса на объединение отобразятся в режиме таблицы.

Пример создания запроса на объединение

В этом разделе приведен пример, который вы можете воссоздать в базе данных «Борей». Этот запрос на объединение собирает имена людей из таблицы Customers и объединяет их с именами из таблицы Поставщики. Чтобы изучить пример, выполняйте эти инструкции в своей копии базы данных «Борей».

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

Чтобы создать запрос, нужно выполнить следующие действия:

  1. Создайте два запроса на выборку («Запрос1» и «Запрос2»), указав в качестве источников их данных таблицы Customers и «Поставщики» соответственно. В качестве отображаемых значений используйте поля «Имя» и «Фамилия».
  2. Создайте запрос («Запрос3»), в котором изначально нет источника данных, и нажмите кнопку Объединение на вкладке Конструктор, чтобы сделать его запросом на объединение.
  3. Скопируйте инструкции SQL из запросов «Запрос1» и «Запрос2» и вставьте их в «Запрос 3». Не забудьте удалить лишнюю точку с запятой и добавить ключевое слово UNION. Вы можете проверить результаты в режиме таблицы.
  4. Добавьте в один из запросов предложение, определяющее порядок записей, а затем вставьте инструкцию ORDER BY в запросе на объединение в режиме SQL. Обратите внимание на то, что при добавлении инструкции ORDER BY в «Запрос3» сначала удаляются точки с запятой, а затем названия таблиц из имен полей.
  5. Окончательный код SQL, который объединяет и сортирует имена в этом запросе, выглядит так:

SELECT Customers.Company, Customers.[Last Name], Customers.[First Name] FROM Customers UNION SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name] FROM Suppliers ORDER BY [Last Name], [First Name];

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

В оставшихся разделах этой статьи вы найдете дополнительные советы и рекомендации по использованию запросов на объединение.

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

В предыдущем примере мы объединили данные только из двух таблиц базы данных «Борей». Однако в запрос на объединение очень легко добавить больше таблиц. Например, в результаты приведенного выше запроса может также потребоваться включить имена сотрудников. Для этого добавьте третий запрос и объедините его с существующей инструкцией SQL, используя еще одно ключевое слово UNION:

SELECT Customers.Company, Customers.[Last Name], Customers.[First Name] FROM Customers UNION SELECT Suppliers.Company, Suppliers.[Last Name], Suppliers.[First Name] FROM Suppliers UNION SELECT Employees.Company, Employees.[Last Name], Employees.[First Name] FROM Employees ORDER BY [Last Name], [First Name];

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

SELECT "Customer" As Employment, Customers.[Last Name], Customers.[First Name] FROM Customers UNION SELECT "Supplier" As Employment, Suppliers.[Last Name], Suppliers.[First Name] FROM Suppliers UNION SELECT "In-house" As Employment, Employees.[Last Name], Employees.[First Name] FROM Employees ORDER BY [Last Name], [First Name];

Вот как отображается результат в представлении таблицы. В Access отображаются следующие пять примеров записей:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *