Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вложение подзапросов



Часто невозможно решить поставленную задачу путем использования единственного запроса. Например, в тех случаях, когда при использовании условия поиска в предложении WHERE параметр <значение, с которым сравнивать> заранее не определен и должен вычисляться в момент выполнения оператора SELECT.

В этом случае оператор SELECT с подзапросом имеет следующий вид:

SELECT …

FROM …

WHERE <сравниваемое_значение> <оператор> (SELECT …)

Пример:

SELECT KOLVO, DAT_RASH

FROM RASHOD

WHERE KOLVO = (SELECT MAX(KOLVO) FROM RASHOD)

Замечание.

Ошибкой для данного вида запроса является использование вложенного оператора SELECT, возвращающего вместо единичного список значений.

Пример1 (ошибочный):

SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, R.POKUP

FROM RASHOD R

WHERE R.POKUP = (SELECT POK.POKUP

FROM POKUPATELI POK

WHERE UPPER(POK.GOROD) = ‘МОСКВА’)

Пример 2 (исправленный):

SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, R.POKUP

FROM RASHOD R

WHERE R.POKUP IN (SELECT POK.POKUP

FROM POKUPATELI POK

WHERE UPPER(POK.GOROD) = ‘МОСКВА’)

Пример 3

SELECT RRR.*

FROM RASHOD RRR

WHERE R.POKUP IN

(SELECT R.POKUP

FROM RASHOD R

WHERE KOLVO =

(SELECT MAX(RSH.KOLVO)

FROM RASHOD RSH))

Логический порядок выполнения запроса:

· Определяется самая крупная покупка – отыскивается максимальное значение в столбце KOLVO («самый вложенный» запрос).

· Определяется покупатель, осуществивший эту покупку (средний запрос)

· Основной запрос выбирает записи с заданным покупателем.





Дата публикования: 2014-12-28; Прочитано: 235 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...