Tabriklaymiz — siz Ma'lumotlarni filtrlash bo'limini deyarli tugatdingiz! Shu yo'lda biz quyidagilarni o'rgandik:
=, <>, <, >, <=, >=;Bu darsda yangi mavzu yo'q. Buning o'rniga biz o'rgangan narsalarni bitta amaliy vazifada birlashtiramiz. Aynan shunday — bir nechta filtr shartini bog'lab, kerakli hisobotni tuzish — kundalik ishda eng ko'p uchraydigan SQL vazifasidir.
Odatdagidek mahsulotlar jadvalida ishlaymiz:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
| 5 | Daftar | Kanstovar | 8000 | 200 |
| 6 | Ruchka | Kanstovar | 3000 | 500 |
| 7 | Stol | Mebel | 800000 | 15 |
| 8 | Stul | Mebel | 250000 | 40 |
Tasavvur qiling: siz onlayn do'kon menejerisiz. Sizdan arzon, lekin omborda yetarlicha ko'p qolgan mahsulotlar ro'yxatini so'rashdi. Aniqrog'i:
1000000 dan past bo'lsin;40 dan kam bo'lmasin (ya'ni 40 yoki undan ko'p).Bunday "ikki yoqlama" talab dastlab murakkab tuyuladi. Lekin sirini ochsak — uni mayda bo'laklarga ajratish kerak. Har bir talabni alohida shartga aylantiramiz, keyin ularni AND bilan birlashtiramiz.
1-shart — narx past:
SELECT nomi, narx FROM mahsulotlar WHERE narx < 1000000;2-shart — ombor yetarli: "40 dan kam bo'lmasin" degani — 40 yoki undan katta, ya'ni >=:
SELECT nomi, ombor FROM mahsulotlar WHERE ombor >= 40;Eslatma: "kam bo'lmasin" — bu juda muhim ibora. U
40ning o'zini ham o'z ichiga oladi, shuning uchun>emas,>=ishlatamiz. Agar shart "40 dan ko'p" bo'lganida,>to'g'ri kelardi.
Endi har ikkala talab ham bajarilishi kerak — bu yerda AND o'rinli. Qator natijaga tushishi uchun ikkala shart ham rost bo'lishi shart:
SELECT nomi, narx, ombor FROM mahsulotlar
WHERE narx < 1000000 AND ombor >= 40;Keling, jadvalni qo'lda tekshirib chiqamiz, ma'no aniq bo'lsin:
40 dan kam ❌40, ya'ni >= 40 rost ✅Demak, beshta mahsulot ro'yxatga tushadi.
So'rov bir nechta qator qaytaradi. Bo'lim davomida ko'p marta takrorlaganimizdek — bir nechta qator bo'lsa, tartibni aniq belgilash uchun ORDER BY qo'shamiz. Menejer arzonidan boshlab ko'rishni xohlaydi, shuning uchun narx bo'yicha o'sish tartibida tartiblaymiz:
SELECT nomi, narx, ombor FROM mahsulotlar
WHERE narx < 1000000 AND ombor >= 40
ORDER BY narx;Natija:
Ruchka|3000|500
Daftar|8000|200
Kitob|50000|100
Stul|250000|40
Quloqchin|300000|50Mana shu — to'liq hisobot! Diqqat qiling: ustunlar SELECT da qaysi tartibda yozilgan bo'lsa (nomi, narx, ombor), natijada ham xuddi shu tartibda chiqdi.
Muhim: Murakkab so'rovni bir zarbda yozishga urinmang. Avval shartlarni alohida-alohida tekshiring, keyin
ANDbilan birlashtiring, oxiridaORDER BYqo'shing. Bu usul xatolarni topishni ancha osonlashtiradi.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — narxi 1000000 dan past va ombordagi soni 40 dan kam bo'lmagan mahsulotlarning nomi, narxi va omborini, narx bo'yicha o'sish tartibida chiqaruvchi SELECT so'rovini yozish.