Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL Учебник.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.28 Mб
Скачать

Комбинированные запросы

Комбинированные запросы подразумевают объединение нескольких запросов в один. Для такого объединения используется оператор UNION. Этот оператор помещается между запросами.

Рассмотрим уже известную таблицу и применим к ней запрос, объединяющий два запроса.

"

Показать столбцы: Фамилия, Год, Пол, родившихся в 1987 году или только девушек.

Студенты"

Фамилия

Год

Пол

Группа

Воронова

1984

ж

103

Борисов

1987

м

102

Васильев

1985

м

102

Антонова

1983

ж

106

Романова

1984

ж

104

Винтин

1987

м

103

Булычев

1984

м

102

Голубева

1987

ж

104

Жданов

1985

м

107

Стандартный запрос с использованием логического оператора OR

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "ж" OR Год = 1987

Фамилия

Год

Пол

Воронова

1984

ж

Борисов

1987

м

Антонова

1983

ж

Романова

1984

ж

Винтин

1987

м

Голубева

1987

ж

Получим тот же результат, но при помощи комбинированного запроса.

Запрос, обединяющий два запроса с помощью оператора UNION.

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "ж"

UNION

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Год = 1987

Фамилия

Год

Пол

Воронова

1984

ж

Борисов

1987

м

Антонова

1983

ж

Романова

1984

ж

Винтин

1987

м

Голубева

1987

ж

По результатам, между этими запросами нет никакой разницы. Объединяющий запрос применяется для разрешения трудностей с использованием длинных логических условий в предложении WHERE. В этом случае запрос разбивается на несколько запросов, которые объединяются оператором UNION

Примечание:

Обратите внимание на последнюю строку, полученную по результатам запроса.

Голубева

1987

ж

Эта строка будет найдена обоими запросами: один найдет ее по году (1987), второй по полу (ж). Но в таблице, полученной по результатам запроса запись одна. Это свойство оператора UNION, он удаляет повторяющиеся записи.

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

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Пол = "ж"

UNION ALL

SELECT Фамилия, Год, Пол

FROM Студенты

WHERE Год = 1987

Фамилия

Год

Пол

Воронова

1984

ж

Борисов

1987

м

Голубева

1987

ж

Романова

1984

ж

Винтин

1987

м

Антонова

1983

ж

Голубева

1987

ж

Внимание:

Для комбинированных запросов необходимо, что бы каждый запрос содержал одни и те же столбцы которые должны быть перечислены в одном и том же порядке (Фамилия, Год, Пол).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]