|
Murakkab so`rovlar yaratish. Jadvallarni jamlashtirish
|
bet | 8/10 | Sana | 11.12.2023 | Hajmi | 34,52 Kb. | | #116098 |
Bog'liq Baza
SELECT * FROM Customers
WHERE Rating > ALL (SELECT Rating FROM Customers
WHERE City = 'Rome' );
Bu operator Rimdagi xamma buyurtmachilar baxolari qiymatlarini tekshiradi. SHundan so‘ng Rimdagi xamma buyurtmachilardapn baxosi yuqori bo‘lgan buyurtmachilarni topadi. Rimda eng yuqori baxo - Giovanni (200). Demak 200 dan yuqori qiymatlar olinadi.
ANY operatori uchun bo‘lgani kabi ALL operatori uchun xam IN va EXISTS yordamida alьternativ konstruksiyalar yaratish mumkin.
ALL asosan tengsizliklar bilan ishlatiladi, chunki qiymat "xammasi uchun teng " ostki so‘rov natijasi bo‘lishi mumkin agag xamma natijalar bir xil bo‘lsa. SQL da < > ALL ifoda aslida ostki so‘rov natijasining " xech qaysisiga teng emas " ma’noni bildiradi. Boshqacha qilib aytganda proedikat rost agar berilgan qiymat ostki so‘rov natijalari orasida topilmagan bo‘lsa. Agar oldingi misolda tenglik tengsizlikka almashtirilsa, reytingi 300 ga teng bo‘lgan xamma buyurtmachilar chiqariladi, chunki ostki so‘rov 100 va 200 ga teng reytinglarni topgan.
ALL va ANY – orasidagi asosiy farq, ostki so‘rov xech qanday natija qaytarmagan xolatda ko‘rinadi. Bu xolda ALL - avtomatik (“TRUE”) ga teng, ANY bo‘lsa avtomatik (“FALSE”) ga teng.
Misol: Buyurtmachilar jadvali xammasini chiqarish
SELECT * FROM Customers
WHERE Rating > ALL ( SELECT Rating FROM Customers
WHERE City = 'Boston' );
Ko‘rsatilgan operatorlar bilan ishlashda NULL qiymatlar ma’lum muammolarni keltirib chiqaradi. SQL predikatda solishtirayotgan qiymatlardan biri bo‘sh (NULL) qiymat bo‘lsa, natija noaniqdir. Noaniq predikat, noto‘g‘ri predikatga o‘xshash, shuning uchun satr tashlab yuboriladi.
UNION ifodasidan foydalanish.
UNION ifodasi bir yoki bir necha SQL so‘rovlar nitijasini birlashtirishga imkon beradi.
Misol: Londonga joylashgan xamma sotuvchilar va buyurtmachilarni bitta jadvalda chiqaring.
SELECT SNum, SName FROM Salepeople
|
| |