Раздел UNION

Раздел UNION служит для объединения результатов выборки, возвращаемых двумя и более запросами.

Рассмотрим синтаксис раздела UNION:

<Спецификация_ Запроса_1>

UNION [АLL]

<Спецификация_ Запроса_2>

[UNION [АLL]]

<Спецификация_ Запроса_n>

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

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

типы данных соответствующих столбцов второго и последующих запросов должны поддерживать неявное преобразование или совпадать с типом данных столбцов первого запроса;

ни один из результатов не может быть отсортирован с помощью раздела ORDER BY(однако общий результат может быть отсортирован, как будет показано ниже).

Указание ключевого слова ALLпредписывает включать в результат повторяющиеся строки. По умолчанию повторяющиеся строки в результат не включаются.

Продемонстрируем применение раздела UNION.Рассмотрим таблицы «Кадровый Состав» и «Студенты» и попробуем построить, например, общий список и учащихся, и преподавателей, номер телефона которых начинается на 120.

Сначала построим запрос для таблицы «Кадровый Состав»:

SELECT Фамилия, Имя, Отчество, Должность, Телефон

FROM Кадровый_ состав

WHERE Телефон LIKE '120%'

Результат действия запроса показан на рис. 7.28.

Затем построим запрос для таблицы «Студенты».

SELECT Фамилия, Имя, Отчество, Телефон

FROM Студенты

WHERE Телефон LIKE '120 %'

В результате выполнения запроса получим выборку, показанную на рис. 7.29.

Теперь объединим два запроса, чтобы в результате получить единую таблицу. Заметим, что столбец Должность отсутствует в таблице «Студенты». Чтобы в общей таблице выделить студентов, введем в запрос для таблицы «Студенты» столбец, содержащий строку — константу «Студент» для всех записей, и объединим два запроса с помощью раздела UNION:

SELECT Фамилия, имя, Отчество, Должность, Телефон

FROM кадровый_ состав

WHERE Телефон LIKE '120 %'

UNION

SELECT, Фамилия, имя, Отчество, Новый_ столбец = 'Студент',

Телефон

FROM Студенты

WHERE Телефон LIKE '120 %'

После выполнения запроса получим таблицу, показанную на рис. 7.30.

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

Упорядочим полученный список по алфавиту, добавив предложение ORDER BY:

SELECT Фамилия, имя, Отчество, должность, Телефон

FROM Кадровый_ состав

WHERE Телефон LIKE '120 %'

UNION

SELECT Фамилия, имя. Отчество, Новый_ столбец = Студент

Телефон

FROM Студенты

WHERE Телефон LIKE '120%'

ORDER BY Фамилия

Результат показан на рис. 7.31.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: