|
Ma’lumot bazasi modellari
|
bet | 15/20 | Sana | 27.05.2024 | Hajmi | 1,82 Mb. | | #254618 |
Bog'liq 4-maruzaid_book
|
name
|
id_cat
|
page
|
id_avtor
|
yil
|
1
|
Odamiylik Mulki
|
4
|
980
|
1
|
2016
|
2
|
Ikki eshik orasi
|
1
|
450
|
2
|
1996
|
3
|
Ikki eshik orasi
|
1
|
460
|
2
|
2000
|
4
|
Ikki eshik orasi
|
1
|
380
|
2
|
2012
|
5
|
Sariq devni minib
|
5
|
220
|
3
|
1990
|
6
|
Sariq devni minib
|
5
|
180
|
3
|
2005
|
7
|
Shaytanat
|
2
|
1250
|
1
|
2018
|
8
|
Dexqon va ayiq
|
5
|
100
|
5
|
2019
|
9
|
Eng katta sexr
|
5
|
230
|
5
|
2020
|
10
|
Nafs kishanlari
|
4
|
240
|
1
|
2015
|
11
|
Samum
|
2
|
380
|
1
|
2012
|
12
|
Jannati odamlar
|
4
|
210
|
3
|
1996
|
13
|
Shirin qovunlar mamlakati
|
5
|
180
|
3
|
1986
|
14
|
Qora tol
|
1
|
350
|
4
|
1988
|
15
|
Dala armonlari
|
1
|
450
|
4
|
1967
|
16
|
Mangu buloq
|
4
|
360
|
4
|
1970
|
17
|
Sehrli qalpoqcha
|
3
|
250
|
3
|
1964
|
18
|
Dunyoning ishlari“
|
4
|
280
|
2
|
2005
|
19
|
Shaytanat
|
2
|
960
|
1
|
2020
|
|
Avtor
id_avtor
|
fio
|
1
|
Toxir Malik
|
2
|
O`tkir Hoshimov
|
3
|
Xudayberdi To`xtaboyev
|
4
|
Ibraym Yusupov
|
5
|
Xalq ogzaki ijodi
|
Categiriya
id_cat
|
name_cat
|
1
|
Tarixiy
|
2
|
Detektiv
|
3
|
Fantastik
|
4
|
Tarbiyaviy
|
5
|
Ertak
|
|
Keltirilgan ko`p jadvalli so`rov bir jadvalli so`rovdan quyidagilar bilan farq qiladi.
FROM sektsiyasida ikkita jadval ko`rsatilgan.
jadvallr soni bitta ko`p, shuning uchun ko`rsatilgan maydonlar nomining bir qiymatliligi yo`qoladi. Masalan, ko`p xollarda maydonni FROM da ko`rsatilgan jadvallar ro`yxatidagi qaysi jadvaldan olish noma`lum bo`lib qoladi. Maydon nomlarining ko`p qiymatliligini bataraf etish uchun maydon nomida perefiks - jadval nomi qo`shimcha qilinadi. Jadval nomi maydon nomidan nuqta bilan ajratiladi.
WHERE ifodasida jadvallarni birlashtirish sharti ko`rsatiladi.
Yuqoridagi ikki yoki undan ko`p amallarni o`zaro bog`lashda, jadvallardagi mos quyilayotgan atributlarning qiymati bittalab tekshiriladi. Bu esa so`rov bajarilishi uchun ortiqcha resurs zaruriyatini keltirib chiqaradi.
2-masala. 2005 yildan keyin chop etilgan adabiyotlarni muallifi, kategriyasi va saxifalari bilan chiqarish talab etilgan bo`lsin.
SELECT B.name, A.fio, C.name_cat, B.page
FROM Books B, Avtor A, Categoria C
WHERE B.id_avtor = A.id_avtor AND
B.id_cat = C.id_cat AND B.yil > 2005
So`rov natijasi quyidagicha bo`ladi.
name
|
fio
|
name_cat
|
page
|
Ikki eshik orasi
|
Utkir Hoshimov
|
Tarixiy
|
380
|
Shaytanat
|
Toxir Malik
|
Detektiv
|
1250
|
Samum
|
Toxir Malik
|
Detektiv
|
380
|
Shaytanat
|
Toxir Malik
|
Detektiv
|
960
|
Odamiylik Mulki
|
Toxir Malik
|
Tarbiyaviy
|
980
|
Nafs kishanlari
|
Toxir Malik
|
Tarbiyaviy
|
240
|
Sariq devni minib
|
Xudayberdi To`xtaboyev
|
Ertak
|
180
|
Dexqon va ayiq
|
Xalq ogzaki ijodi
|
Ertak
|
100
|
Eng katta sexr
|
Xalq ogzaki ijodi
|
Ertak
|
230
| 2. JOIN orqali jadvallarni gorizontal birlashtirish
Ko`pchilik holatlarda butun MBdan amaliy ahamiyatli natijalarni olishda ko`p jadvalli murakkab so`rovlarni yaratishga to`g`ri keladi. Hozirgi kunda MBBTlarida bir nachta jadvallarning mos atributlari bo`yicha o`zaro bog`lanishni ta`minlovchi standartlar mavjud. Bular zarur ma`lumotlarni turli jadvallardan olishda jadvallarni o`zaro gorizontal bog`lanishni (JOIN) ta`minlaydi. Bu yerda o`ng tomon va chap tomon jadvallar tegishli artibutlari biror shart asosida birlashtiriladi. Gorizontal bog`lanish bir nechta turga ajratiladi: Join, Left Join, Right Join, Full Join, Cross Join, Natural Join.
Bizga Authors va Books jadvallari berilib bu jadvallarni vertikal birlashtirishda ularning mos AuthorID va BookID atributlari qaraladi.
Authors
AuthorID
|
AuthorName
|
1
|
Bruce Eckel
|
2
|
Robert Lafore
|
3
|
Andrew Tanenbaum
|
|
Books
BookID
|
BookName
|
3
|
Modern Operating System
|
1
|
Thinking in Java
|
3
|
Computer Architecture
|
4
|
Programming in Scala
|
|
JOIN – chap va o`ng tomondagi jadvallar birlashtiriladi va mos qo`yilgan atributlar orasidagi shart bajarilganda javob (yozuv) qaytariladi
chap_jadval INNER JOIN o`ng_jadval ON bog`lanish_sharti
INNER JOIN sintaksisi:
SELECT maydon nomlari [,... n]
FROM Jadval_1
INNER JOIN Jadval _2 ON bog`liqlik_sharti
Misol:
SELECT * FROM Authors A
INNER JOIN Books B ON A.AuthorID = B.BookID
Natija
A.AuthorID
|
A.AuthorName
|
B.BookID
|
B.BookName
|
3
|
Andrew Tanenbaum
|
3
|
Modern Operating System
|
1
|
Bruce Eckel
|
1
|
Thinking in Java
|
3
|
Andrew Tanenbaum
|
3
|
Computer Architecture
|
LEFT JOIN – chap tomon jadvalining barcha qatori qaytariladi. Bu qaytarilayotgan qiymatlarga mos o`ng tomon jadvalidan mos qiymatlar olinadi, agar mos qiymati bo`lmasa bo`sh qiymat (NULL) qaytariladi
chap_jadval LEFT OUTER JOIN o`ng_jadval ON bog`lanish_sharti
LEFT JOIN sintaksisi:
SELECT maydon nomlari [,... n] FROM Jadval_1
LEFT OUTER JOIN Jadval _2 ON bog`liqlik_sharti
Misol:
SELECT * FROM Authors A
LEFT OUTER JOIN Books B ON A.AuthorID = B.BookID
Natija
A.AuthorID
|
A.AuthorName
|
B.BookID
|
B.BookName
|
1
|
Bruce Eckel
|
1
|
Thinking in Java
|
2
|
Robert Lafore
|
NULL
|
NULL
|
3
|
Andrew Tanenbaum
|
3
|
Modern Operating System
|
3
|
Andrew Tanenbaum
|
3
|
Computer Architecture
|
LEFT JOIN orqali chap tomon jadvalining o`ng tomon jadvaliga tegishli bo`lmagan qatorlaridan holi qatorlarini ajratib olish mumkin. Ya`ni chap tomon jadvalidan o`ng tomon jadval elementlarini ayirib chap tomon jadval qatorlarini chiqarish mumkin.
chap_jadval LEFT OUTER JOIN o`ng_jadval ON bog`lanish_sharti WHERE o`ng_jadval IS NULL
Misol:
SELECT * FROM Authors A
LEFT OUTER JOIN Books B ON A.AuthorID = B.BookID
WHERE B.BookID IS NULL
RIGHT JOIN – o`ng tomon jadvalining barcha qatori qaytariladi. Bu qaytarilayotgan qiymatlarga mos chap tomon jadvalidan mos qiymatlar olinadi, agar mos qiymati bo`lmasa bo`sh qiymat (NULL) qaytariladi
chap_jadval RIGHT OUTER JOIN o`ng_jadval ON bog`lanish_sharti
RIGHT JOIN sintaksisi:
SELECT maydon nomlari [,... n] FROM Jadval_1
RIGHT OUTER JOIN Jadval _2 ON bog`liqlik_sharti
Misol:
SELECT * FROM Authors A
RIGHT OUTER JOIN Books B ON A.AuthorID = B.BookID
Natija
A.AuthorID
|
A.AuthorName
|
B.BookID
|
B.BookName
|
3
|
Andrew Tanenbaum
|
3
|
Modern Operating System
|
1
|
Bruce Eckel
|
1
|
Thinking in Java
|
3
|
Andrew Tanenbaum
|
3
|
Computer Architecture
|
NULL
|
NULL
|
4
|
Programming in Scala
|
RIGHT JOIN orqali o`ng tomon jadvalining chap tomon jadvaliga tegishli bo`lmagan qatorlaridan holi qatorlarini ajratib olish mumkin. Ya`ni o`ng tomon jadvalidan chap tomon jadval elementlarini ayirib o`ng tomon jadval qatorlarini chiqarish mumkin.
|
| |