SELECT my_prod.name
FROM my_prod
NATURAL LEFT JOIN their_prod
Jadvallarni o‘zi bilan jamlash.
Jadvallarni o‘zi bilan jamlash uchun xar bir satrning o‘zi yoki boshqa satrlar bilan kombinatsiyasini xosil qilishingiz mumkin. So‘ngra xar bir satr predikat yordamida baxolanadi. Bu turdagi jamlash boshqa turdagi jamlashdan farq qilmaydi, farqi ikki jadval bir xildir. Jadvallarni jamlashda qaytariluvchi ustun noilari oldiga jadval nomi qo‘yiladi. Bu usutunlarga so‘rovlarda murojaat qilish uchun xar xil nrmlarga ega bo‘lishi kerak. Buning uchun vaqtinchalik nomlar ya’ni psevdonimlar qo‘llandi. Ular so‘rov FROM jumlasida jadval nomidan so‘ng bo‘shlik qo‘yib yoziladi.
Misol: bir xil reytingga ega xamma buyurtmachilar juftlarini topish.
SELECT a.CName, b.CName, a.Rating
FROM Customers a, Customers b
WHERE a.Rating = b.Rating;
Bu xolda SQL a va b jadvallarni jamlagandek ish tutadi. YUqorida keltirilgan misolda ortiqcha satrlar mavjud, xar bir kombinatsiya uchun ikkita qiymat. Birinchi psevdonimdagi A qiymat ikkinchi psevdonimdagi B qiymat bilan kombinatsiyasi olinadi, so‘ngra ikkinchi psevdonimdagi A qiymat birinchi psevdonimdagi B qiymat bilan kombinatsiyasi olinadi.
Xar gal satr o‘zi bilan solishtiriladi. Buni oldini olish soda usuli ikki qiymatga cheklanish kiritish, toki birinchi qiymat ikkinchisidan kichik bo‘lsin yoki alfavit bo‘yicha oldin kelsin. Bu predikatni aasimmetrik qiladi, natijada xudi shu qiymatlar teskari tartibda olinmaydi.
Misol:
SELECT a.CName, b.CName, a.Rating
FROM Customers a, Customers b
WHERE a.Rating = b.Rating
AND a.CName < b.CName;
Bu misolda agar birinchi kombinatsiya ikkinchi shartni qanoatlantirsa u chiqariladi, lekin teskari kombinatsiya bu shartni qanoatlantirmaydi va aksincha. Siz SELECT ifodasida yoki so‘rovning FROM jumlasida keltirilgan xar bir psevdonim yoki jadvalni ishlatishingiz shart emas. Siz xar xil jadvallar, xamda bitta jadval xar psevdonimlaridan iborat jmlanma yaratishingiz mumkin.
Sodda joylashtirilgan ostki so‘rovlar.
SQL yordamitda so‘rovlarni bir birining ichiga joylashtirishingiz mumkin. Odatda ichki so‘rov qiymat xosil qiladi va bu qiymat tashqi predikat tomonidan tekshirilib, to‘g‘ri yoki noto‘g‘riligi tekshiriladi.
Misol: bizga sotuvchi nomi ma’lum: Motika, lekin bizSNum maydoni qiymatini bilmaymiz va Buyurtmachilar jadvalidan xamma buyurtmalarni ajratib olmoqchimiz. Buni quyidagicha amalga oshirish mumkin:
Do'stlaringiz bilan baham: |