Цей оператор дозволяє об’єднати результати декількох запитів. Цей оператор підходить, коли потрібно одночасно побачити відповідні аналогічні дані з різних таблиць.
Синтаксис UNION:
оператор <SELECT>
UNION
оператор <SELECT>
UNION
……………………..
оператор <SELECT>
При виконанні оператора UNION обов’язково мають співпадати кількість стовпців у всіх запитах SELECТ, а також вони повинні мати один тип даних. Рядки-дублі при цьому в результат не включаються.
Приклад 1. Створити запит, в якому перелічені викладачі-доценти і викладачі-професори, при цьому ми скористуємося таблицею, що була отримана в п. 5, та додамо до неї таблицю з викладачами-професорами, яку отримаємо шляхом запиту до таблиць POSADA і VYKLADACH.
FROM POSADA INNER JOIN VYKLADACH ON POSADA.KodPost = VYKLADACH.KodPost WHERE (((POSADA.PostVykl) = ”професор”));
Отримаємо результат
KodVykl
PrizvVykl
NomKaf
Середа І.С.
Бандур М.М.
Мунтян Р.Д.
Сірко В.В.
Оприско Ю.Й.
Батурин О.Й.
Махно Н.Є.
Собчак А.О.
Даний оператор зручно використовувати для згортки перехресних таблиць в звичайні реляційні таблиці. Продемонструємо це на прикладі згортки перехресної таблиці NavThCros, що була отримана в п.4. Щоб це було не просто „спортивна” процедура, наблизимо ситуацію до реальної. Припустимо, що норма навантаження викладачів змінилася після врахування ученого ступеню (доктор наук, кандидат наук, без наукового ступеню). Для зменшення технічної роботи в подальшому замінимо назви посад на їх коди. Хай в Excel після корегування нова перехресна таблиця виглядає таким чином.
KodVykl
PrizvVykl
Середа І.С.
Бандур М.М.
Мунтян Р.Д.
Сірко В.В.
Оприско Ю.Й.
Турчак А.Д.
Батурин О.Й.
Балагура А.М.
Махно Н.Є.
Собчак А.О.
Черно Ф.М.
Приклад 2. Імпортиуємо таблицю в середовище Access і будемо по кроку, для кожного стовпчика „Код посади”, вибирати рядки, де є значення норми навантаження, і об’єднувати їх, при цьому новому стовпцю дамо назву NewNormPost.
SELECT NavThCros.KodVykl, NavThCros.PrizvVykl, "04" AS KodPost, NavThCros.[04] AS NewNormPost FROM NavThCros
WHERE (((NavThCros.[04]) Is Not Null))
UNION
SELECT NavThCros.KodVykl, NavThCros.PrizvVykl, "02" AS KodPost, NavThCros.[02] AS NewNormPost FROM NavThCros
WHERE (((NavThCros.[02]) Is Not Null))
UNION
SELECT NavThCros.KodVykl, NavThCros.PrizvVykl, "01" AS KodPost, NavThCros.[01] AS NewNormPost FROM NavThCros
WHERE (((NavThCros.[01]) Is Not Null))
UNION
SELECT NavThCros.KodVykl, NavThCros.PrizvVykl, "03" AS KodPost, NavThCros.[03] AS NewNormPost FROM NavThCros