Методические указания по их использованию. Пособие содержит большое количество примеров на использование операторов sql, которые могут быть полезны как на этапе освоения материала, так и выступать в качестве вопросов для самопроверки



Download 441,57 Kb.
bet25/71
Sana15.01.2023
Hajmi441,57 Kb.
#899634
TuriМетодические указания
1   ...   21   22   23   24   25   26   27   28   ...   71
Bog'liq
Методичка SQL(14) (оптимизация)

4.2.1 Простые вложенные подзапросы


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

Пример 25.


Мы знаем название блюда: Сырники, но не знаем значение ID, и хотим извлечь все Продукты из таблицы Продукты, которые участвуют в его приготовлении. Можно сделать это, выполнив операцию соединения, но существует и иной способ:



SELECT *

Результат




Блюдо

Продукт

Вес

18

5

10

18

6

30

18

8

140

18

14

15

18

16

15
FROM Соcтав
WHERE Блюдо = ( SELECT ID_блюда
FROM Блюда
WHERE Блюдо = 'Сырники');
Чтобы оценить внешний (основной) запрос, SQL сначала должен оценить внутренний запрос (или подзапрос) внутри предложения WHERE. Единственной найденной строкой естественно будет ID_блюда = 18. Однако SQL, не просто выдает это значение, а помещает его в предикат основного запроса вместо самого подзапроса, так чтобы предиката принял вид


WHERE Блюдо = 18
Основной запрос затем выполняется как обычно. Конечно же, подзапрос должен выбрать один и только один столбец, а тип данных этого столбца должен совпадать с тем значением, с которым он будет сравниваться в предикате. При использовании подзапросов в предикатах, основанных на операторах сравнения ( =, <>, < и т.д.), вы должны убедиться, что использовали подзапрос, который будет выдавать одну и только одну строку вывода (в некоторых случаях, можно использовать DISTINCT, чтобы вынудить подзапрос генерировать одиночное значение).
Если заменить условие WHERE Блюдо=’Сырники’ на условие WHERE Основа = 'Молоко’, мы получим в результате подзапроса несколько строк. Это сделает условие основного запроса невозможным для оценки, и команда выдаст ошибку. Если вы используете подзапрос, который не выводит никаких значений вообще, команда будет выполнена; но основной запрос не выведет никаких значений. Подзапросы, которые не производят никакого вывода (или нулевой вывод) вынуждают рассматривать предикат ни как верный, ни как неверный, а как неизвестный. Однако, неизвестный предикат имеет тот же самый эффект что и неверный: никакие строки не выбираются основным запросом.
Синтаксис использования простого подзапроса
< столбец | выражение > < оператор > < подзапрос >
Варианты < подзапрос > < оператор > < столбец | выражение > или, < подзапрос > < оператор > < подзапрос > недопустимы.
Если не удается построить подзапрос, возвращающий единственное значение необходимо использовать предикат IN.
Пример 26:

Download 441,57 Kb.

Do'stlaringiz bilan baham:
1   ...   21   22   23   24   25   26   27   28   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish