|
Ko`p jadvalli SQL so`rovlar
|
bet | 14/20 | Sana | 27.05.2024 | Hajmi | 1,82 Mb. | | #254618 |
Bog'liq 4-maruzaKo`p jadvalli SQL so`rovlar
Shu paytgacha faqat bitta jadvaldan ma`lumotlarni tanlash misollari keltirildi. Relyatsion amallarga mos bo`lgan bir nechta jadvallardan ma`lumotlar tanlab olishni ham bajarish mumkin. Buning uchun jadvallarning qaysidir atribut qiymatlari bir-biriga mutanosib bo`lishi talab etiladi. Ya`ni atributlarning nomi turlicha bo`lishi mumkin, lekin ulardagi ma`lumot turlari mos bo`lishi kerak. Qoidaga ko`ra, ma`lumotlar tanlab olinadigan jadvallar u yoki bu shaklda bir biri bilan bog`langan. Masalan, birga ko`p va x.k.
Agar jadvalllar to`plam deb qaraladigan bo`lsa, umumiy holda to`plamlar ustida asosan quyidagi 3 amal bajariladi.
Kesishma – ikki yoki undan ko`p turlicha bo`lgan to`plamlarning umumiy elementlarini belgilash uchun foydalaniladi.
Ayirma – birinchi to`plamda mavjud, lekin ikkinchi to`plamda shu elementlar yo`q bo`lgan boshqa elementlarni tanlashda foydalaniladi
Birlashma – ikki yoki undan ko`p o`xshash bo`lgan to`plamlarni birlashtirishda ishlatiladi.
Bundan ko`pjadvalli so`rovlarni uch guruhga ajratish mumkin:
WHERE - shartlar orqali jadvallarni bog`lash
JOIN – jadvallarni gorizontal birlashtirish bo`yicha amallar
UNION – so`rov natijalarini vertikal birlashtirish amallari.
Endi jadvallarni o`zaro birlashtirish yoki bog`lash guruhlari bo`yicha amallarni misollar orqali ko`rib o`tiladi.
1. WHERE orqali jadvallarni bog`lash
Misol tariqasida yuqoridagi kabi kitoblar to`g`risida ma`lumot beruvchi ER-diagramma va uning bog`langan jadvallari berilgan bo`lsin. Diagrammadan ko`rinib turibdiki, Books va Avtor jadvallari id_avtor atributlari orqali, Books bilan Categiriya jadvallari esa id_cat atributlari orqali bog`langan.
1-masala. SQL so`rov orqali barcha kitob nomi, muallifi va yilini matn ko`rinishda chiqarish talab etilgan bo`lsin.
So`rovda bog`lanishni WHERE orqali ifodalash quyidagicha bo`ladi.
SELECT Books.id_book, Books.name, Avtor.fio, Books.yil
FROM Books, Avtor
WHERE Books.id_avtor = Avtor.id_avtor
Ko`rinib turganidek jadval nomidan iborat prefiksdan foydalanish so`rovni murakkablashtiradi. Bunday murakkablikni bartaraf etish uchun alias (psevdonim) ishlatiladi. Yuqoridagi so`rovni quyidagicha yozish mumkin:
SELECT B.id_book, B.name, A.fio, B.yil
FROM Books B, Avtor A
WHERE B.id_avtor = A.id_avtor
|
| |