|
SELECT * FROM Orders main
|
bet | 6/10 | Sana | 11.12.2023 | Hajmi | 34,52 Kb. | | #116098 |
Bog'liq BazaSELECT * FROM Orders main
WHERE NOT SNum =
( SELECT SNum FROM Customers
WHERE CNum = main.CNum );
Asosiy so‘rov asoslangan jadvalga asoslanuvchi mutanosib so‘rovdan foydalanishingiz mumkin.
Misol: sotib olishlar buyurtmachilari uchun o‘rta qiymatdan yuqori bo‘lgan xama yuuyurtmalarni topish.
SELECT * FROM Orders a
WHERE AMT >
( SELECT AVG (AMT) FROM Orders b
WHERE b.CNum = a.CNum );
HAVING operatoridan ostki so‘rovlarda foydalanilganidek mutanosib ostki so‘rovlarda xam foydalanigsh mumkin.
HAVING ifodasida mutanosib ostki so‘rovdan foydalanganda HAVING o‘zida ishlatilishi mumkin bo‘lgan pozitsiyalarga tashqi ilovalarni cheklab qo‘yishingiz kerak. CHunki HAVING ifodasida faqat agregat SELECT ifodasida ko‘rsatilgan funksiyalardan yoki GROUP BY ifodasida ko‘rsatilgan maydonlardan foydalanish mumkin. Ulardan siz tashqi ilova sifatida foydalanishingiz mumkin. Buning sababi shuki HAVING tashqi so‘rovdagi satrlar uchun emas guruxlar uchun baxolanadi. SHuning uchun ostki so‘rov bir marta satr uchun emas gurux uchun bajariladi.
Misol: Buyurtmalar jadvalidagi sotibolishlar summalarini sanalar bo‘yicha guruxlaь summasini xisoblash kerak bo‘lsin. SHu bilan birga summa maksimal summadan kamida 2000.00 ga ko‘p bo‘lmagan sanalarni chiqarib tashlash kerak bo‘lsin:
SELECT ODate, SUM (AMT) FROM Orders a
GROUP BY ODate
HAVING SUM (AMT) >
( SELECT 2000.00 + MAX (AMT) FROM Orders b
WHERE a.ODate = b.ODate );
Ostki so‘rov asosiy so‘rovning ko‘rilayotgan agregat guruxi sanasiga teng sanaga ega xmma satrlar uchun MAX qiymat xisoblaydi. Bu WHERE ifodasidan foydalanib bajarilishi lozim. Ostki so‘rovning o‘zi GROUP BY yoki HAVING operatorlarini ishlatmasligi kerak.
EXISTS operatoridan foydalanish.
EXISTS - bu “TRUE” yoki “FALSE” qaytaruvchi operatordir. Bu shuni bildiradiki, u predikatda avtonom yoki mantiqiy operatorlar AND, OR, va NOT yordamida tuzilgan mantiqiy ifodalar bilan kombinatsiya qilingan xolda ishlatilishi mumkin. U ostki so‘rovni “TRUE” deb baxolaydi agar u ixtiyoriy natija xosil qilsa va “FALSE” deb baxolaydi xech qanday natija xosil qilmasa.
Misol: Agar buyurtmachilardan ju da bo‘lmasa bittasi San Jose shaxrida yashasa, buyurtmachilar jadvalidagi ma’lumotlarni chiqaring.
|
| |