pp lect8 1

24
1 9 долоо хоног ӨС-ийн боловсруулалт Агуулга Select команд Хүснэгтүүдийг холбох энгийн холболт гадаад холболт Эрэмбэлэлт,бүлэглэлт

Upload: ulziibaatar

Post on 20-Jun-2015

1.015 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Pp Lect8 1

1

9 долоо хоногӨС-ийн боловсруулалт

Агуулга Select команд

Хүснэгтүүдийг холбох энгийн холболт гадаад холболт

Эрэмбэлэлт,бүлэглэлт

Page 2: Pp Lect8 1

2

ӨС-ийн боловсруулалт Select команд Үндсэн үйлдлүүд

Хүснэгтүүд холбох Энгийн холболт SELECT < хүснэгт1>.<талбар1>, <хүснэгт1>.<талбар2>,

<хүснэгт2>.<талбар1>, <хүснэгт2>. <талбар2>,... FROM <хүснэгт1> INNER JOIN < хүснэгт2> ON <хүснэгт1>.<түлхүүр

>=<хүснэгт2>.<түлхүүр > Талбарыг ямар хүснэгтээс уншихыг заахын тулд хүснэгтийн

нэр, талбарын нэр хоёрыг цэгээр тусгаарлаж өгнө

Page 3: Pp Lect8 1

3

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Жишээ нь: Оюутан ба оюутны мэргэжил хүснэгтийг мэргэжлийн кодоор холбож оюутны мэргэжлийг дэлгэрүүлж гаргах

Select St.*, Pr. Prof_Name

From Students St Inner Join Profession Pr

ON St. Prof_ID = Pr. Pr_ID Тайлбар: St.*- оюутан хүснэгтээс бүх талбарыг уншина

Page 4: Pp Lect8 1

4

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Зэрэгцээ энгийн холболт

Жишээ Оюутны 7 хоногийн цагийн ачааллыг бодох зорилгоор

Хичээл(Course), Хичээлийн хэлбэр(Course_Type), Оюутны хичээл сонголт(Student _Course) гэсэн 3 хүснэгтийг холбоё

SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour

FROM Course Crs INNER JOIN Course_type Crs_T

ON Crs. Crs_ID=Crs_T. Crs_ID,

INNER JOIN Student _Course St_Crs

ON Crs. Crs_ID=St_Crs.Crs_ID

INTO TEMP Student_Hour

Page 5: Pp Lect8 1

5

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Үр дүнгийн Student_Hour хүснэгт

St_ID Crs_ID Crs_Name Credit Type Hour

HW03D025 SW207 ӨС 3 Лекц 2

HW03D025 SW207 ӨС 3 Семинар 2

HW03D025 SW230 Веб дизайн 2 Лекц 2

HW03D025 SW230 Веб дизайн 2 Лаборатор 1

SW03D026 SW207 ӨС 3 Лекц 2

SW03D026 SW207 ӨС 3 Семинар 2

SW03D026 SW230 Веб дизайн 2 Лекц 2

SW03D025 SW230 Веб дизайн 2 Лаборатор 1

Page 6: Pp Lect8 1

6

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Холболтын үр дүнгээс бичлэг сонгох Жишээ Програм хангамжийн оюутнуудын 7 хоногийн цагийн

ачааллыг бодоё гэвэл бичлэг сонгох үйлдэл нэмэгдэнэ SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM Course Crs INNER JOIN Course_type Crs_T ON Crs. Crs_ID=Crs_T. Crs_ID, INNER JOIN Student _Course St_Crs ON Crs. Crs_ID=St_Crs.Crs_ID WHERE Left(St_ID, 2)=“SW” INTO TEMP SW_student_hour

Page 7: Pp Lect8 1

7

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Эсвэл

SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour

FROM Student_Hour

WHERE Left(St_ID, 2)=“SW”

INTO TEMP SW_student_hour

Хуудас 4 дээрх Select –ийн Student_Hour гэсэн хайлтыг ашиглаж болно

Page 8: Pp Lect8 1

8

ӨС-ийн боловсруулалт Select команд

Энгийн холболт

Үр дүнгийн SW_student_hour хүснэгт

St_ID Crs_ID Crs_Name Credit Type Hour

SW03D026 SW207 ӨС 3 Лекц 2

SW03D026 SW207 ӨС 3 Семинар 2

SW03D026 SW230 Веб дизайн 2 Лекц 2

SW03D025 SW230 Веб дизайн 2 Лаборатор 1

Page 9: Pp Lect8 1

9

ӨС-ийн боловсруулалт Select команд Үндсэн үйлдлүүд

Гадаад холболт SELECT команданд зүүн гадаад холболтыг Left Outer Join

гэж заадаг

Select < харьцаа1>.<талбар1>,<харьцаа1>.<талбар2>,...

<харьцаа2>.<талбар1>, <харьцаа2>. <талбар2>, ...

From <эх харьцаа> Left Outer Join <охин харьцаа>

On <харьцаа1>.<түлхүүр> =<харьцаа2>.<түлхүүр>

Page 10: Pp Lect8 1

10

ӨС-ийн боловсруулалт Select команд

Гадаад холболт

Баруун гадаад холболтыг Right Outer Join гэж заадаг

Select < харьцаа1>.<талбар1>, харьцаа1>.<талбар2>,... <харьцаа2>.<талбар1>,<харьцаа2>.<талбар2>,

… From <охин харьцаа> Right Outer Join <эх харьцаа> On <харьцаа1>.<түлхүүр>

=<харьцаа2>.<түлхүүр>

Page 11: Pp Lect8 1

11

ӨС-ийн боловсруулалт Select команд

Гадаад холболт

Жишээ нь: оюутан ба мэргэжил хүснэгтүүдийг гадаадаар холбох Select St. *, Pr. Prof_Name From Student St

Left Outer Join Profession Pr On St. Prof_ID = Pr. Prof_ID

Оюутны код

Оюутны нэр

Мэрг. код  

Мэрг. нэр

SW99B027 Д.Болор D484105 Комп.ПХ

SW99B028 Х.Тамир D484105 Комп.ПХ

SW99B029 M.Сувд D484110 Комп.ТХ

SW99B039 С. Баяр D484112  

Page 12: Pp Lect8 1

12

Зэрэгцээ гадаад холболт

Жишээ1: Оюутны цагийн ачааллыг бодохын тулд хичээл сонголт (Student _Course) гэсэн гол мэдээллийг агуулж буй хүснэгтийг эх болгон, түүн рүү (Course), хичээлийн хэлбэрийг (Course_Type) хоёрыг зэрэг холбоё

SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour

FROM Student _Course St_Crs

LEFT OUTER JOIN Course Crs

ON St_Crs.Crs_ID=Crs.Crs_ID,

LEFT OUTER JOIN Course_type Crs_T

ON St_Crs. Crs_ID=Crs_T. Crs_ID

INTO TEMP Student_Hour

ӨС-ийн боловсруулалт Select команд

Гадаад холболт

Page 13: Pp Lect8 1

13

ӨС-ийн боловсруулалт Select команд

Гадаад холболтДараалсан гадаад холболт

Жишээ1-ийг оюутны хичээл сонголт (Student _Course) гэсэн гол мэдээллийг агуулж буй хүснэгтийг эх болгон, түүн рүү 1-рт хичээлийг (Course), 2-рт хичээлийн хэлбэрийг (Course_Type) холбож бас болох боловч илүү Select хийгдэнэ.

SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM

(SELECT St_Crs. St_ID, Crs. *

FROM Student _Course St_Crs

LEFT OUTER JOIN Course Crs

ON St_Crs.Crs_ID=Crs.Crs_ID)

LEFT OUTER JOIN Course_type Crs_T

ON St_Crs. Crs_ID=Crs_T. Crs_ID INTO TEMP Student_Hour

Page 14: Pp Lect8 1

14

Буруу холболтын жишээ

Харин жишээ1-ийг хичээл(Course), хичээлийн хэлбэрийг (Course_Type) гэсэн мэдээллийг түрүүлж холбоход тухайн улиралд ордоггүй, нэг ч оюутан сонгоогүй хичээлүүд үр ашиггүй холбогдоно

SELECT St_Crs. St_ID, Crs. *, Crs_T.Type, Crs_T. Hour FROM

(SELECT Crs. *, Crs_T.Type, Crs_T. Hour

FROM Course Crs

INNER JOIN Course_type Crs_T

ON Crs.Crs_ID=Crs_T. Crs_ID)

LEFT OUTER JOIN Student _Course St_Crs

ON Crs.Crs_ID=St_Crs. Crs_ID

INTO TEMP Student_Hour

ӨС-ийн боловсруулалт Select команд

Гадаад холболт

Page 15: Pp Lect8 1

15

ӨС-ийн боловсруулалт Select команд

Хүснэгтүүдийг холбох

Холболт хийхэд анхаарах зүйлс Үр ашиггүй холболт хийхгүй байх Тайлан боловсруулалтанд орох гол мэдээллийн

хүснэгтүүдээ эхлэж холбох ямар нэгэн vйл ажиллагааны бvртгэл дэх єгєгдлийг нэгтгэсэн

тайлан

Гол мэдээллийг нэгтгэж боловсруулсны дараа бүртгэл дэх кодуудыг дэлгэрүүлж задлах зорилгоор лавлахуудыг холбож байх

Лавлахуудыг хооронд нь түрүүлж холбохгүй байх

Page 16: Pp Lect8 1

16

ӨС-ийн боловсруулалт Select команд

Эрэмбэлэлт

Хайлтын үр дүнг эрэмбэлэх Хайлтын үр дүнг тодорхой эрэмбэтэй гаргая гэвэл Select

командыг дараахи хэлбэрээр хэрэглэнэ

Select <талбарын жагсаалт> From <хүснэгтийн нэр> Order By <эрэмбэлэх түлхүүр>

Тайлбар: ORDER BY <эрэмбэлэх түлхүүр> - эрэмбэлэх түлхүүр талбар Олон талбараар эрэмбэлэх үед талбаруудыг таслалаар

тусгаарлаж заана

Page 17: Pp Lect8 1

17

ӨС-ийн боловсруулалт Select команд

Бүлэглэлт

Бүлэглэх Select командын ерөнхий хэлбэр

SELECT <талбаруудын жагсаалт>

FROM <хүснэгтийн нэр>

GROUP BY <бүлэглэх түлхүүр>

[HAVING <бичлэг сонгох нөхцөл>] Тайлбар:

GROUP BY <бүлэглэх түлхүүр>- бүлэглэх түлхүүр Олон талбараар бүлэглэх үед талбаруудыг таслалаар тусгаарлана HAVING <нөхцөл>-бүлэглэлтийн үр дүнгээс бичлэг сонгох HAVING –ийг GROUP BY заалтууртай давхар хэрэглэнэ

Page 18: Pp Lect8 1

18

ӨС-ийн боловсруулалт Select команд

Бүлэглэлт Бүлэглэлтийн жишээ Багшийн хичээлийн нэгтгэлийг гаргах

Select T_ID As Багшийн код,

COUNT (хичээлийн код) As Нийт хичээл,

Sum (кредит) As Нийт кредит

From COURSE Group by T_ID Order by T_ID

Into temp Teacher_Courses

Page 19: Pp Lect8 1

19

ӨС-ийн боловсруулалт Select команд

Бүлэглэлт

2 хичээлтэй, 8-аас илүү кредит заасан багш нарын нэгтгэлийг гаргах

Select T_ID As Багшийн код, Count (хичээлийн код) As Нийт хичээл, Sum (кредит) As Нийт кредит From COURSE Group by T_ID Having Нийт хичээл=2 and Нийт кредит>=8 Into temp Teacher_Courses

Page 20: Pp Lect8 1

20

ӨС-ийн боловсруулалт Select команд

Бүлэглэлт

Үр дүнгийн Student_Hour хүснэгтээс оюутны хичээлийн ачааллыг улирлаар нэгтгэж гаргая

Үүсэх бүлгүүд

HW

SW

St_ID Crs_ID Credit Type Hour

HW03D025 SW207 3 Лекц 2

HW03D025 SW207 3 Семинар 2

HW03D025 SW230 2 Лекц 2

HW03D025 SW230 2 Лаборатор 1

SW03D026 SW207 3 Лекц 2

SW03D026 SW207 3 Семинар 2

Page 21: Pp Lect8 1

21

ӨС-ийн боловсруулалт Select команд

Бүлэглэлт

Тэнхмийн код

Суусан хичээлийн

дундаж

Дундаж цаг

HW 20.5 41

SW 20.1 45

BA 14.5 29

Нэгтгэлийн үр дүн

Page 22: Pp Lect8 1

22

ӨС-ийн боловсруулалт Select команд

БүлэглэлтЗавсрын Query1

St_ID Crs_IDCred

itType Hour

HW03D025

SW207 3 Лекц 2

HW03D025

SW207 3 Семинар 2

HW03D025

SW230 2 Лекц 2

HW03D025

SW230 2 Лаборатор 1

… … … … …

SW03D026

SW207 3 Лекц 2

SW03D026

SW207 3 Семинар 2

Select St_ID As Оюутны_код,

Count(Crs_Type) As Суусан цаг.тоо,

Sum(Crs_Type_Hour*15) As Суусан нийт цаг

From Student_hour Group by St_ID, Crs_ID Into Query1

Оюутны кодСуусан цаг.тоо

Суусан

нийт цаг

HW03D025

4 105

... .. ...

SW03D026

2 60

1 дэх шатанд оюутан тус бvрээр бvлэглэж нэгтгэлийг хийнэ

Page 23: Pp Lect8 1

23

ӨС-ийн боловсруулалт Select команд

БүлэглэлтЗавсрын Query1

Оюутны код Суусан цаг.тоо

Суусан

нийт цаг

HW03D025

4 105

... .. ...

SW03D026

2 60

Select Left(Оюутны код,2) As Тэнхмийн код,

Avg (Суусан цаг.тоо ) As Суусан хичээлийн дундаж, Avr(Суусан нийт цаг) As Дундаж цаг

From Query1 Group by Left(Оюутны код,2)

Into Department_Totals

Тэнхмийн код

Суусан хичээлийн дундаж

Дундаж цаг

HW 20.5 41

SW 20.1 45

BA 14.5 29

Page 24: Pp Lect8 1

24

Унших материал “ӨС” ном, бүлэг 6

хуудас 62-71 хуудас 76-81

Харьцаа алгебрийн илэрхийлэл Select командыг харьцуулж унших