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



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

JOIN Наличие n ON s.Продукт = n.Продукт
WHERE b.ID_Блюда NOT IN (select Блюдо from Заказы where ID_Заказ = 2)
GROUP BY b.Блюдо,b.ID_Блюда, b.Труд
HAVING (SUM (s.Вес * n.Цена/1000)+b.Труд) < ANY
(SELECT SUM (s.Вес*n.Цена/1000)+b.Труд as Стоимоть
FROM ((Блюда b JOIN Состав s ON b.ID_Блюда = s.Блюдо)
JOIN Наличие n ON s.Продукт = n.Продукт)
JOIN Заказы z ON s.Блюдо = z.Блюдо
WHERE ID_Заказ = 2
GROUP BY b.Блюдо, b.Труд);
Подзапрос определяет стоимость блюд заказа. Эти данные используются для отбора в основном запросе.
Оператор ALL.
С помощью ALL, предикат является верным, если каждое значение выбранное подзапросом удовлетворяет условию в предикате внешнего запроса. Если мы хотим найти самый дорогой (дешевый Цена <=) продукт, то можем это сделать следующим образом:
Пример 36.
SELECT Продукт FROM Наличие
WHERE Цена >= ALL (SELECT DISTINCT Цена FROM Наличие);
Т.е. мы найдем те продукты, которые имеют цену выше или равную всем остальным (максимальную). Как и в случае с ANY, мы можем использовать EXISTS для производства альтернативной формулировки такого же запроса:
SELECT Продукт
FROM Наличие n
WHERE NOT EXISTS (SELECT * FROM Наличие n1
WHERE n1.Цена > n.Цена);
ALL чаще используется с неравенствами, чем с равенствами, так как значение может быть "равным для всех" результатом подзапроса, только если все результаты, фактически, идентичны. Рассмотрим следующий запрос:
Пример 37.
SELECT Продукт
FROM Наличие
WHERE Цена = ALL (SELECT DISTINCT Цена FROM Наличие);
Эта команда допустима, но, мы не получим никакого вывода. Только в единственном случае вывод будет выдан этим запросом - если все цены на продукты окажутся одинаковыми.
В SQL, выражение - < > ALL - в действительности соответствует " не равен любому " результату подзапроса. Другими словами, предикат верен, если данное значение не найдено среди результатов подзапроса.
Следует отметить, что вариант с EXISTS не абсолютно идентичен вариантам с ANY(ALL) из-за различия в том как обрабатываются NULL-значения. Всякий раз, когда допустимый подзапрос не в состоянии сделать вывод, ALL - автоматически верен, а ANY автоматически неправилен. Большинство пользователей, однако, находят ANY и ALL более удобными в использовании, чем EXISTS, который требует соотнесенных подзапросов. Кроме того, в зависимости от реализации, ANY и ALL могут, по крайней мере, в теории, быть более эффективными, чем EXISTS. Подзапросы ANY или ALL могут выполняться один раз и иметь вывод, используемый чтобы определять предикат для каждой строки основного запроса. EXISTS, с другой стороны, берет соотнесенный подзапрос, который требует, чтобы весь подзапрос повторно выполнялся для каждой строки основного запроса. Основная причина для формулировки EXISTS как альтернативы ANY и ALL в том, что ANY и ALL могут быть несколько неоднозначен, из-за способа использования этого термина в Английском языке.
Правильное понимание ANY и ALL.
В SQL, сказать что - значение больше (или меньше) чем любое(ANY) из набора значений – то же самое что сказать, что оно больше (или меньше) чем любое одно отдельное из этих значений. И наоборот, сказать, что значение не равно всему(ALL) набору значений, тоже что сказать, что нет такого значения в наборе которому оно равно.

Download 441,57 Kb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   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