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:
SELECT * FROM Orders
WHERE SNum =
( SELECT SNum FROM Salepeople
WHERE SName = 'Motika' );
Avval ichki so‘rov bajariladi, so‘ngra uning natijasi tashqi so‘rovni xosil qiligsh uchun ishlatiladi (SNum ostki so‘rov natijasi bilan solishtiriladi).
Ostki so‘rov bitta ustun tanlashi lozim, bu ustun qiymatlari tipi predikatda solishtiriladigan qiymat tipi bilan bir xil bo‘lishi kerak. Siz ba’zi xollarda ostki so‘rov bitta qiymat xosil qilishi uchun DISTINCT operatoridan foydalanish mumkin.
Misol: Hoffman (CNum=21) ga xizmat ko‘rsatuvchi sotuvchilar xamma buyurtmalarini topish lozim bo‘lsin.
Do'stlaringiz bilan baham: |