Дополнительные сведения
⇐ ПредыдущаяСтр 7 из 7 Подчиненный запрос можно использовать вместо выражения в списке полей инструкции SELECT или в предложениях WHERE и HAVING. Инструкция SELECT используется в подчиненном запросе для задания набора конкретных значений, вычисляемых в выражениях предложений WHERE или HAVING. Пример синтаксиса подзапроса SELECT имена полей FROM имена таблиц WHERE поле сравнение (SELECT имена полей FROM имена таблиц [WHERE….] ……………………..; ) [Оглавление] · подзапрос возвращает одно значение · подзапрос возвращает не одно значение Использование подзапросов возвращающих одно значение Пример Вывести фамилии сотрудников подразделения, оклад которых ниже среднего в подразделении. SELECT Фамилия FROM Подразделение WHERE Оклад < (SELECT avg (Оклад) FROM Подразделение ); Использование подзапросов возвращающих несколько значений В этом случае необходимо использовать предикаты ANY(SOME), ALL, IN. 1. Предикаты ANY или SOME, являющиеся синонимами, используются для отбора записей в главном запросе, которые удовлетворяют сравнению хотя бы с одним значением из всех отобранных в подчиненном запросе. Пример Отбираются все товары, цена которых больше, чем цена хотя бы одного товара, проданного со скидкой в 25 процентов или более: SELECT * FROM Товары WHERE Цена > ANY (SELECT Цена FROM Заказано WHERE Скидка >= 0.25); 2. Предикат ALL используется для отбора в главном запросе только тех записей, которые удовлетворяют сравнению со всеми записями, отобранными в подчиненном запросе. Если в предыдущем примере предикат ANY заменить предикатом ALL, результат запроса будет включать только те товары, чья цена больше, чем цена всех товаров, проданных со скидкой 25% или более. Это условие является значительно более жестким.
3. Предикат IN используется для отбора в главном запросе только тех записей, которые содержат значения, совпадающие (равно) с одним из отобранных подчиненным запросом. Пример Показать все товары, проданные со скидкой, большей или равной 25 процентам: SELECT * FROM Товары WHERE КодТовара IN (SELECT КодТовара FROM Заказано WHERE Скидка >= 0.25); И наоборот, предикат NOT IN используется для отбора в главном запросе только тех записей, которые содержат значения, не совпадающие ни с одним из отобранных подчиненным запросом.
Дополнительные возможности использования подзапросов. Предикат EXISTS (с необязательным зарезервированным словом NOT) используется в логическом выражении для определения того, должен ли подчиненный запрос возвращать какие-либо записи. В подчиненном запросе можно использовать псевдонимы таблиц, перечисленные в предложении FROM, расположенном вне подчиненного запроса. Пример Выдать список покупателей получивших товар со склада SELECT П.Фамилия, П.Телефон FROM Покупатели AS П WHERE EXISTS (SELECT P.Фамилия FROM Расход AS P WHERE П.Фамилия = P.Фамилия ); [Оглавление]
Читайте также: Глава 7 Дополнительные характеристики невротической потребности в любви Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|