[NOT] IN;
{ALL | SOME | ANY};
[NOT] EXISTS;
IN операторы белгілі бір мәнді
мәндер тізіміне салыстырып,
салыстырылған тізімде мән бар ма немесе салыстырылатын мән
тексерілген тізімнің элементі емес екенін тексеру ҥшін пайдаланылады.
Тӛмендегі мысал ӛнімнің ең кӛп
лотын сатып алған
тҧтынушылардың сату тізімін кӛрсетеді:
SELECT П.*
FROM САТАЛЫМДАР П WHERE П. Тҧтынушы IN
(SELECT П1. Тҧтынушы FROM САТЫЛЫМДАР П1
WHERE П1. Саны =
(SELECT MAX (П2. Саны ) FROM САТЫЛЫМДАР П2))
Бҧл сҧрақтың логикасын тҥсіндірейік. Біріншіден, Саны бағандағы
ең ҥлкен мән анықталады:
SELECT MAX (П2. Саны ) FROM ПРОДАЖИ П2
Келесі сҧраудан кейін осы сатып алуды жасаған тҧтынушылар
анықталады:
SELECT П1. Тҧтынушы FROM САТЫЛЫМДАР П1
WHERE П1. Саны =
(SELECT MAX (П2. Саны) FROM САТЫЛЫМДАР П2)
Содан кейін негізгі сҧраныс SALES кестесінен табылған
клиенттермен
IN операторымен, яғни CUSTOMER ӛрісінің мәні
кірістірілген сҧрауларда алынған жиынтыққа тиесілі SALES кестесінен
алынған деректерді ғана алынған деректер жиынына тҥсетін барлық
жазбаларды таңдайды (12.10-сур.).
Номер
|Клиент
|
Товар
Количество Дата
►
45
1
Федорова Д.С.
конфеты "Коровка"
50 02.04.2013
162 Федорова Д.С.
Халва
10 15.02.2013
200 Лесовая В.Н.
Мармелад "Кроха"
20 07.02.2013
85 Лесовая В.Н.
Мука пшеничная
50 02.04.2013
254 Лесовая В.Н.
Сахар
50 01.02.2013
12.10 сурет. Тауарлардың барынша кӛп мӛлшерін сатып алатын тҧтынушылардың
сатып алу тізімі
263
NOT IN пайдаланған кезде салыстыру мәні кірістірілген сҧрауларда
алынған жиынтыққа кірмейтін жолдарды таңдауға болады.
ANY және ALL деген кілт сӛздерді
сандардың бір бағанын
қайтаратын ішкі есептермен пайдалануға болады.
Сәйкестендірілген
мәннің
және
тӛменгі
сҧрау
арқылы
қайтарылатын мәндердің арақатынасы ALL және SOME (ANY):
■
ALL дегеніміз, салыстырмалы мәннің тӛменгі сҧрау арқылы
қайтарылған барлық мәндермен сәйкес келетін коэффициенттің
мәні
болған жағдайда, яғни, тӛменгі сҧраудың нәтижелендірілген
бағанындағы барлық мәндер ҥшін дҧрыс екендігін кӛрсетеді;
■
SOME (немесе ANY) - іздеу шарты салыстырылған мәннің тӛменгі
сҧрау арқылы қайтарылған кем дегенде бір мәнмен дҧрыс
қатынасында
болғанда, яғни ол тӛменгі сҧраудың нәтижелендірілген бағанында кем
дегенде біреуіне қанағаттандырылады. Егер тӛменгі сҧрау нәтижесі
бойынша бос мән алынды, онда ALL сӛзі ҥшін салыстыру шарты
орындалды деп есептеледі және кілт сӛзді ANY - аяқталмаған. SOME
кілт сӛзі ANY сӛзбен синоним болып табылады.
Жоғарыда келтірілген мысалдарды келтірейік.
Тауар сатылатын
бірліктердің саны орташа мәннен асатын тауарларды сату фактілерінің
барлығын анықтаңыз:
SELECT * FROM САТЫЛЫМДАР
П1 WHERE П1. Саны>ALL
(SELECT AVG(П2. Саны)
FROM
САТЫЛЫМДАРП2
GROUP BY
П2.Тҧтынушы )
Және HAVING сӛйлемін және ALL кілт сӛзін пайдаланудың тағы
бір мысалы. Ең кӛп тауарларды сатып алған клиент туралы ақпаратты
шығарып алу керек SELECT К.*
FROM
ТҦТЫНУШЫЛАР К
WHERE К.
Тҧтынушы =
(SELECT П.Тҧтынушы FROM САТЫЛЫМДАР П
GROUP BY П. Тҧтынушы HAVING SUM^. Саны) >=
ALL (SELECT SUM (П1. Саны)FROM
САТЫЛЫМДАРП1 GROUP BY П1. Тҧтынушы))
Достарыңызбен бөлісу: