SELECT CNum, CName, City FROM CustomersWHERE EXISTS (SELECT * FROM Customers
WHERE City = 'San Jose');
EXISTS ni faqat sodda ostki so‘rov bilan emas mutanosib so‘rov bilan ishlatish mumkin. Bu holda EXISTS ichki ostki so‘rovni tashqining xar bir satri uchun tekshiradi.
ALL, ANY, SOME operatorlaridan foydalanish.
ANY, ALL, va SOME ostki so‘rovlarni argument sifatida qabul qiluvchi EXISTS operatorni eslatadi, lekin relyasion operatorlar bilan birga ishlatilishi bilan farq qiladi. Bu tomondan ular ostki so‘rovlarga qo‘llaniluvchi IN operatorini eslatadi, lekin undan farqli faqat ostki so‘rovlar bilan ishlashadi. SOME va ANY operatorlari o‘zaro almashinuvchan.
Misol: bir shaxarda joylashgan sotuvchilar bilan buyurtmachilarni topish uchun ANY operatoridan foydalanish.
SELECT * FROM Salepeople WHERE City = ANY (SELECT City FROM Customers);
Operator ANY ostkiso‘rov chiqargan xamma qiymatlarni oladi, (bu misol uchun – buyurtmachilar jadvalidagi xamma City qiymatlari) va rost deb baholaydi, agar ularning ixtiyoriysi (ANY) tashqi so‘rov satridagi shaxar qiymatiga teng bo‘lsa. ANY operatori o‘rniga IN yoki EXISTS ishlatish mumkin, lekin ANY “= “ operatordan boshqa relyatsion operatorlarni ishlatishi mumkin. Misol: Xamma sotuvchilarni alfavit bo‘yicha kelgan buyurtmachilari bilan birga topish.
SELECT * FROM Salepeople WHERE SName < ANY (SELECT CName FROM Customers);
ANY to‘la bir qiymatli emas. Misol: Rimdagi buyurtmachilarga ko‘ra yuqori reytinga ega buyurtmachilarni topish.
SELECT * FROM Customers WHERE Rating > ANY (SELECT Rating FROM Customers WHERE City = 'Rome');
Ingliz tilida " ixtiyoriysidan katta (bu yerda City = Rome) " baxolash quyidagicha talqin qilinadi, bu baxolash qiymati xar bir City = Rome xoldagi baxolash qiymatidan katta bo‘lishi kerak. SQL tilida ANY operatoridan foydalanilganda bunday emas. ANY to‘g‘ri deb baxolanadi agar ostki so‘rov shartga mos keluvchi ixtiyoriy qiymat topsa. Yuqorida ko‘rilgan misol 300 va 200 baxoli xamma buyurtmachilarni topadi, chunki 300>200 Rimdagi Giovanni uchun va 200>100 Rimdagi Pereira uchun.
Soddaroq aytganda < ANY ifodasi eng katta tanlangan qiymatdan kichik qiymatni, > ANY - eng kichik tanlangan qiymatdan katta qiymatni bildiradi.
ALL yordamida, predikat rost hisoblanadi, ostki so‘rov tanlagan xar bir qiymat tashqi so‘rov predikatidagi shartga mos kelsa.
Misol: Rimdagi xar bir buyurtmachidan baxolari yuqori bo‘lgan buyurtmachilarni chiqaring.
Do'stlaringiz bilan baham: |