Раздел 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.
Дата добавления: 2015-04-15; просмотров: 796;