SELECT a.CName, b.CName, a.Rating FROM Customers a, customers b WHERE a.Rating = b.Rating;
Bu holda SQL a va b jadvallarni jamlagandek ish tutadi. Yuqorida keltirilgan misolda ortiqcha satrlar mavjud, xar bir kombinatsiya uchun ikkita qiymat. Birinchi nikdagi 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 asimmetrik 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
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, hamda bitta jadval xar psevdonimlaridan iborat jmlanma yaratishingiz mumkin.
Sodda joylashtirilgan ostki so‘rovlar. SQL yordamida 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 biz SNum 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: |