Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
03.06.2015
Размер:
1.17 Mб
Скачать

Пример 2

Для выполнения многократных запросов к одной таблице и возвращения данных в виде одного набора используется комбинированный запрос:

SELECT Name AS n

FROM cities

WHERE Name LIKE 'Т*'

UNION

SELECT Name AS n

FROM cities

WHERE Name LIKE '*ск'

UNION

SELECT Name AS n

FROM cities

WHERE Name > 'Ш'

ORDER BY n DESC

21

Пример 3.

То же – со сложным условием

Для сравнения приводится тот же самый запрос, использующий не оператор UNION, а несколько условий в предложении WHERE:

SELECT Name AS n

FROM cities

WHERE Name LIKE 'Т*'

OR Name LIKE '*ск'

OR Name > 'Ш'

ORDER BY n DESC

22

Пример 4 Разные поля одного типа

SELECT Name

FROM cities

UNION

SELECT RegionName

FROM cities

ORDER BY n DESC

Этот запрос нельзя превратить в простой SELECT со множественным условием

23

Правила применения запросов UNION

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

1)Запрос UNION должен включать два или более операторов SELECT, отделенных один от другого ключевым словом UNION (таким образом, если в запросе используется четыре оператора SELECT, должно быть использовано три ключевых слова UNION).

2)Каждый запрос в операторе UNION должен содержать одинаковое количество столбцов, или статистических функций

3)Поля должны быть перечислены в одном и том же порядке

4)Типы данных столбцов должны быть совместимыми.

Они не обязательно должны быть одного типа, но они должны быть того типа, который СУБД сможет однозначно преобразовать в один

!!Однако некоторые СУБД (например Access) позволяют смешивать типы (числа преобразуются в строки)

24

Пример 5. Два поля

Результат:

SELECT Фамилия , id

FROM Студент

WHERE Фамилия > 'Л'

UNION

SELECT Имя, id

FROM Студент

25

Пример 6

Access позволяет смешивать типы

Результат:

SELECT Фамилия AS n

FROM Студент

UNION

SELECT id AS n

FROM Студент

26

Включение или исключение повторяющихся строк

Запрос UNION автоматически удаляет все повторяющиеся строки из набора результатов запроса (иными словами, он ведет себя точно так же, как вели бы себя несколько предложений WHERE в одном операторе SELECT).

Таково поведение запроса UNION по умолчанию, но при желании вы можете изменить его.

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

27

Пример

SELECT Имя AS n FROM Студент UNION

SELECT Отчество AS n FROM Студент ORDER BY n;

SELECT Имя AS n FROM Студент UNION ALL

SELECT Отчество AS n FROM Студент ORDER BY n;

28

Сортировка результатов комбинированных запросов

Результат применения оператора SELECT сортируется с помощью предложения ORDER BY.

При комбинировании запросов посредством UNION только одно предложение ORDER BY может быть использовано

Предложение ORDER BY должно ставиться в конце - после заключительного оператора SELECT.

В действительности, не имеет смысла сортировать часть набора результатов одним способом, а часть

— другим, поэтому несколько предложений ORDER BY применять не разрешается.

29

Соседние файлы в папке Управл_данными