В більшості SQL-запитів використовується один оператор, за допомогою якого повертаються дані із однієї або кількох таблиць. SQL також дозволяє виконувати одночасно кілька окремих запитів та відображати результат у вигляді єдиного набору даних. Такі комбіновані запити зазвичай називають об'єднаннями або складними запитами.
Запити в мові SQL комбінуються за допомогою оператора UNION. Для цього необхідно вказати кожен запит SELECT та розмістити між ними ключове слово UNION. Обмежень щодо кількості використаннь оператора UNION в одному загальному запиті немає. В попередньому розділі ми зазначали, що MS Access не має можливості створювати повне зовнішнє об'єднання, тепер ми подивимось, як можна цього досягнути через оператор UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Бачимо, що запит відобразив як всі колонки з першої таблиці - так і з другої, незалежно від того, чи всі записи мають відповідники у іншій таблиці.
Також варто зазначити, що в багатьох випадках замість UNION ми можемо використовувати речення WHERE з багатьма умовами, та отримувати аналогічний результат. Проте через UNION записи виглядають більш лаконічними та зрозумілими.
Також необхідно дотримуватись певних правил при написанні комбінованих запитів:
Запит з UNION автоматично видаляє усі повторювані рядки з набору результатів запиту (іншими словами, веде себе як речення WHERE з кількома умовами в одному операторі SELECT). Така поведінка оператора UNION по замовчуванню, але при бажанні ми можемо змінити це. Для цього нам варто використовувати оператор UNION ALL замість UNION.
Результати виконання оператора SELECT сортуються за допомогою речення ORDER BY. При комбінуванні запитів за допомогою UNION тільки одне речення ORDER BY може бути використане, і воно має бути проставлене в останньому операторі SELECT. Дійсно, на практиці немає особливого змісту частину результатів сортувати в одному порядку, а іншу частину - в іншому. Тому кілька речень ORDER BY застосовувати не дозволяється.