
- •Занятие 3 Инструкция select Простая выборка
- •Выборка с условием (фильтрация)
- •Фильтрация по одному полю
- •Расширенные условия отбора
- •Сортировка
- •Вычисляемые поля
- •Математические операции между столбцами.
- •Функция round
- •Текстовые операции. Сцепление столбцов. Функции len, left
- •Функции Даты
- •Условный оператор iif
- •Занятие 7 Статистические функции в sql
- •Группировка данных
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Фильтрация групп
- •Сортировка групп
- •Примеры:
- •Фамилия бажанова коваленко лапина
- •Занятие 8 Подзапросы
- •Использование подзапросов возвращающих одно значение
- •Использование подзапросов возвращающих несколько значений
- •Примеры с подзапросами
- •Соединение таблиц
- •Инструкции на изменение данных Инструкция: delete
- •Инструкция update
- •Инструкция: insert into
- •Insert into ИмяТаблицы
- •Комбинированные запросы
Комбинированные запросы
Комбинированные запросы подразумевают объединение нескольких запросов в один. Для такого объединения используется оператор 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
ж
Внимание:
Для комбинированных запросов необходимо, что бы каждый запрос содержал одни и те же столбцы которые должны быть перечислены в одном и том же порядке (Фамилия, Год, Пол).