Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Дополнительные сведения




Подчиненный запрос можно использовать вместо выражения в списке полей инструкции 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.Фамилия );

[Оглавление]

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...