Спеціальні запити SQL об’єднання

 

Запити на об’єднання дозволяють вводити в одне поле таблиці дані з відповідних полів двох або кількох таблиць або запитів. При виконанні запиту на об’єднання повертаються записи з відповідних полів усіх включених у запит таблиць або запитів.

Вкажемо послідовність дій для виконання запиту на об’єднання:

1 У вікні бази даних виберіть вкладку Запити і натисніть кнопку Создать.

2 У діалоговому вікні Новый запрос виберіть у списку пункт Конструктор і натисніть кнопку OK.

3 Не добавляючи таблиць натисніть кнопку Закрыть у діалоговому вікні Добавление таблиць.

4 У меню Запрос виберіть команду Запрос SQL і підкоманду Объединение.

5 Введіть інструкції SQL SELECT.

6 У реченні ORDER BY при необхідності сортування потрібно вказати поле, по якому проводиться сортування. Зазначене поле має бути вказано в першій інструкції SELECT.

7 Для перегляду результатів запиту натисніть кнопку Вид на панелі інструментів.

Розглянемо комбінування даних із двох або кількох таблиць. Інструкції SQL SELECT комбінуються за допомогою операції UNION, якщо не потрібно повертати записи, що повертаються, або за допомогою операції UNION ALL для вибору усіх записів, у тому числі і тих, що повторюються.

У якості ілюстрації наведемо класичний приклад об’єднання полів “Назва” та “Місто” із таблиць “Постачальники” та “Клієнти”, якщо поле “Країна “ має значення “Україна”.

SELECT [Назва],[Місто]

FROM [Постачальники]

WHERE Країна =”Україна”

UNION SELECT [Назва],[Місто]

FROM [Клієнти]

WHERE Страна =”Україна”;

 

Результатом виконання вказаної операції буде перелік постачальників та клієнтів з України.

Можна вказати синтаксис операції створення запиту на об’єднання, який об’єднує результати кількох незалежних запитів або таблиць.

Синтаксис операції UNION

 

[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UNION [ALL] [TABLE] запрос_n [ ... ]]

 

Аргументи запрос_1…запрос_n операції UNION являють собою або інструкції SELECT, ім’я збереженого запиту або ім’я збереженої таблиці, перед яким стоїть зарезервоване слово TABLE.

В одній операції UNION можна об’єднати результати кількох запитів, таблиць та інструкцій SELECT. Наприклад, можна об’єднати існуючу таблицю "Рахунки" та інструкцію SELECT:

TABLE [Рахунки] UNION ALL

SELECT *

FROM Замовники

WHERE СумаЗамовлення > 1100;

 

По замовчуванню записи, що повторюються, не повертаються при використанні операції UNION, проте, можна добавити предикат ALL, щоб гарантувати повернення усіх записів. Окрім того, такі записи виконуються більш швидко.

Усі запити, включені в операцію UNION, повинні відбирати однакове число полів; при цьому типи даних та розміри полів не обов’язково повинні співпадати.

В кожному аргументі запит допускає використання речення GROUP BY

або HAVING для групування отримуваних даних.

В кінці останнього аргумента можна включити речення ORDER BY, щоб відсортувати дані, що повертаються.

SELECT [Назва],[Місто]

FROM [Постачальники]

WHERE Країна =”Україна”

UNNION SELECT [Назва],[Місто]

FROM [Клієнти]

WHERE Страна =”Україна”

ORDER BY Місто;

При перетворенні запиту на об’єднання в запит іншого типу, наприклад, в запит на вибірку, введена інструкція SQL буде втрачена.

В запитах на об’єднання іменами стовпчиків стають імена полів першої таблиці або з першої інструкції SELECT. Для перейменування полів в результуючій таблиці слід використати речення AS.

Переіменування полів у запиті на об’єднання. Наприклад, у наступному запиті на об’єднання поле «Назва» одержує ім’я «Постачальник/Клієнт»:при виведенні результатів:

 

SELECT Назва AS [Постачальник/Клієнт], Місто

FROM Постачальник

UNION SELECT Назва AS [Постачальник/Клієнт], Місто

FROM Клієнт;

 

Виведення записів, що повторюються, у запитах на об’єднання. Наприклад, у наступному запиті на об’єднання інструкція UNION ALL забезпечує повернення усіх записів, у тому числі тих, що повторюються:

 

SELECT Назва, Місто

FROM Постачальники

UNION ALL SELECT Назва, Місто

FROM Клієнти;

Зазначимо, що усі інструкції SELECT мають повертати однаково число полів у тому ж порядку. Відповідні поля повинні мати сумісні типи даних, за виключенням: допускаються об’єднання в одному полі значень полів типів «Числовой» і «Текстовый».