Комбинированные запросы
- Что такое комбинированные запросы
- Правила применения запросов UNION
- Включение или исключение повторяющихся строк
- Сортировка результатов комбинированных запросов
Что такое комбинированные запросы
В большинстве SQL-запросов используется один оператор, посредством которого возвращаются данные из одной или нескольких таблиц. SQL позволяет также выполнять множественные запросы (за счет многократного использования оператора SELECT) и возвращать результаты в виде одного набора результатов запроса. Эти комбинированные запросы обычно называют соединениями или сложными запросами.
Можно назвать два основных сценария, для выполнения которых вам понадобятся сложные запросы:
• для возвращения одинаковым образом структуриро ванных данных из различных таблиц посредством одного запроса;
• для выполнения многократных запросов к одной таблице и возвращения данных в виде результата одного запроса.
Комбинированные запросы и многократные условия WHERE
Создание комбинированных запросов
ИспользованиеоператораUNION
Как уже говорилось, применение оператора UNION подразумевает многократное использование операторов SELECT. Вначале рассмотрим отдельные операторы:
FROM Customers
WHERE cust_state IN ('IL1,'IN','MI');
cust_name cust_ontact cust email
-------------- ------------------ ----------------------------
Village Toys John Smith sales@villagetoys.com
Fun4All Jim Jones jjones@fun4all.com
The Toy Store Kim Howard NULL
SELECT cust_name, cus^contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
cust_name cus_contact cust_email
--------------- ---------------- --------------
Fun4All Jim Jones jjones@fun4all.com
Fun4All Denise L. Stephens dstephens@fun4all.com
Первый оператор SELECT выбирает все строки, относящиеся к штатам Иллинойс, Индиана и Мичиган, передавая аббревиатуры этих штатов в условие IN. Второй оператор SELECT использует простую проверку на равенство, чтобы найти все местонахождения в таблицах клиента Fun4All.
Чтобы скомбинировать эти два запроса, выполните следующее.
FROM Customers
WHERE cust_state IN (•IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
cust name cust contact cust_email
------------- ------------------- ----------------------
Fun4All Denise L.Stephens dstephens@fun4all.com
Fun4All Jim Jones jjones@fun4all.com
Village Toys John Smith sales@villagetoys.com
The Toy Store Kim Howard NULL
Операторы предыдущего примера состоят из обоих предшествующих операторов SELECT, разделенных ключевым словом UNION. Оператор UNION указывает СУБД выполнить оба оператора SELECT и вывести результаты в виде одного набора результатов запроса.
Для сравнения приводим тот же самый запрос, использующий не оператор UNION, а несколько предложений WHERE:
FROM Customers
WHERE cust_state IN (4L','IN1,'MI')
OR cust_name = 'Fun4All';
В нашем простом примере применение оператора UNION может оказаться более сложным, чем использование предложения WHERE. Однако если условие фильтрации окажется более сложным или если понадобится выбирать данные из многих таблиц (а не только из одной), то оператор UNION может значительно упростить процесс.
Ограничения оператора UNION
В стандартном SQL не существует ограничений на число операторов select, которые могут быть скомбинированы посредством операторов union. Однако лучше все же обратиться к документации СУБД и убедиться в том, что она не накладывает каких-либо ограничений на максимально допустимое число операторов.



