Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Использование команды UNIONКоманда UNION просто объединяет вывод нескольких запросов в один. Например, приведенный ниже запрос выводит всех агентов и заказчиков, размещенных в : SELECT snum, sname FROM Salespeople WHERE city = 'Москва' UNION SELECT cnum, cname FROM Customers WHERE city = 'Москва'Результат: snum sname ----- ------------------ 2001 ТОО Рога и копыта 1001 Иванов Для применения команды UNION существует 2 правила:
Совместимость типов определяется просто:
UNION автоматически исключает дубликаты строк из вывода. Если вы хотите, чтобы все строки из запросов попали в результат используйте UNION ALL: SELECT snum, city FROM Customers UNION ALL SELECT snum, city FROM SalespeopleРезультат: snum city ----- ----------- 1001 Москва 1003 Одесса 1002 Рязань 1002 Бобруйск 1001 Лондон 1004 ТОМСК 1007 Караганда 1001 Москва 1002 Хабаровск 1003 Караганда 1004 Сочи 1007 Красноярск Вместе с UNION может использоваться ORDER BY для упорядочивания вывода. При этом ORDER BY указывается только после последнего запроса, входящего в UNION. SELECT a.snum, sname, onum, 'Наибольший на ',odate FROM Salespeople a, Orders b WHERE a.snum = b.snum AND b.amt = ( SELECT MAX(amt) FROM Orders c WHERE c.odate = b.odate ) UNION SELECT a.snum, sname, onum, 'Наименьший на ', odate FROM Salespeople a, Orders b WHERE a.snum = b.snum AND b.amt = ( SELECT MIN(amt) FROM Orders c WHERE c.odate = b.odate ) ORDER BY 3Результат: snum sname onum odate ----- ------- ----- -------------- ----------- 1007 Шилин 3001 Наименьший на 1999-10-03 1002 Петров 3005 Наибольший на 1999-10-03 1002 Петров 3007 Наименьший на 1999-10-04 1001 Иванов 3008 Наименьший на 1999-10-05 1001 Иванов 3008 Наибольший на 1999-10-05 1003 Егоров 3009 Наибольший на 1999-10-04 1002 Петров 3010 Наименьший на 1999-10-06 1001 Иванов 3011 Наибольший на 1999-10-063 - просто номер колонки вывода. Так проще сортировать записи, т.к. при использовании UNION имена колонок могут выглядеть как угодно. Теперь вы знаете как объединять произвольное количество запросов в единый вывод. Если у вас есть несколько подобных таблиц, принадлежащих разным пользователям, объединение предоставляет удобный способ их слияния и упорядочивания. Этим заканчиваются шаги о запросах. Далее нам предстоит узнать о том, как данные вводятся в таблицы и как создаются собственно таблицы и все, что с этим связано. Запросы будут постоянно встречаться в других типах команд. Следующие шаги будут посвящены: командам вставки, обновления и удаления записей. |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|