Здавалка
Главная | Обратная связь

Використання ключових слів ANY та ALL



Ключові слова ANY та ALL можуть використовуватися із підзапитами, що повертають один стовпець чисел.

Якщо підзапиту передуватиме ключове слово ALL, умова порівняння вважається виконананою лише тоді, коли вона виконується для всіх значень в результуючому стовпці підзапиту. Якщо підзапиту передує ключове слово ANY, то умова порівняння вважається виконананою лише тоді, коли вона виконується хоча б для одного із значень в результуючому стовпці підзапиту.

Якщо в результаті виконання підзапиту отримане порожнє значення, то для ключового слова ALL умова порівняння вважатиметься виконаною, а для ключового слова ANY – невиконаною. Ключове слово SOME є синонімом слова ANY.

Приклад. Визначити клієнтів, що здійснили угоди з максимальною кількістю товару

SELECT Клієнт.Прізвище, Угода.Кількість

FROM Клієнт, Угода

WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

AND Угода.Кількість>=

ALL(SELECT Угода.Кількість FROM Угода);

Приклад. Знайти фірму, що загалом купила товарів на суму, що перевищує 10000 грн.

Тут підзапит непотрібний.

SELECT Клієнт.Фірма, Sum(Товар.Ціна*Угода.Кількість) AS Заг_вартість

FROM Товар, Клієнт, Угода

WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

ANDТовар.КодТовару=Угода.КодТовару

GROUP BY Клієнт.Фірма HAVING Sum(Товар.Ціна*Угода.Кількість)>10000;

 

Приклад. Знайти фірму, представник якої загалом придбав товарів на найбільшу суму.

Тут без підзапитів не обійтися.

 

SELECT Клієнт.Фірма, Sum(Товар.Ціна*Угода.Кількість) AS Заг_вартість

FROM Товар, Клієнт, Угода

WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

AND Товар.КодТовару=Угода.КодТовару

GROUP BY Клієнт.Фірма

HAVING Sum(Товар.Ціна*Угода.Кількість) >=

ALL(SELECT Sum(Товар.Ціна*Угода.Кількість)

FROM Товар AS Товар1, Угода AS Угода1

WHERE Товар1.КодТовару=Угода1.КодТовару

GROUP BY Угода1.КодКлієнта);

 

Вкладений підзапит підраховує загальну вартість покупок кожного клієнта. Зовнішній підзапит також підраховує загальну вартість покупок кожного клієнта і визначає тих, для кого ця сума, в порівнянні з іншими покупцями, є більшою або такою самою.

 

Приклад. Знайти фірми, в угодах яких кількість товару перевищує такий же показник хоча б в одній угоді клієнтів із Львова.

 

SELECT Клієнт.Фірма

FROM Клієнт, Угода

WHERE Клієнт.КодКлієнта=Угода.КодКлієнта

AND Угода.Кількість > ANY

(SELECT Угода.Кількість

FROMКлієнт AS Клієнт1, Угода AS Угода1

WHERE Клієнт1.КодКлієнта=Угода1.КодКлієнта

AND Клієнт1.МістоКлиента='Львів');

 

Використання ключового слова ALL у підзапиті є способом обходу обмеження на заборону вкладеності одна в одну агрегатних функцій. Використання ключового слова ANY у підзапиті є способом реалізації умови “хоча б один”, “жоден” – аналог IN, NOT IN.

Умова лише один реалізується оператором !=.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.