資料庫系統概論第 五章 多重子查詢操作   上一頁    下一頁

5-3 多重子查詢 in 連結

內容:

  • 5-3-1 子查詢 In 連結語法

  • 5-3-2 範例研討:列印選課名單

  • 5-3-3 範例研討:查詢系所開課課程

  • 5-3-4 自我挑戰:查詢系所開課詳細資料

  • 5-3-5 自我挑戰:查詢班級開課資料

  • 5-3-6 自我挑戰:查詢教師開課

5-3-1 子查詢 In 連結語法

如果第一次查詢出來的結果不只一個的話{如:value1, value2, …},就必須利用 in 語句來連結,表示所有數值都要執行一次。語句格式如下:

Select 欄位_1, 欄位_2, ..

From 表格

Where 欄位名稱 in (Select 欄位

                                    From 表格

                                   Where 條件判斷);

5-3-2範例研討:列印選課名單

(A)程式功能:Ex5_3

請列印出修讀『資料庫管理系統』(開課代號 open_course_ID=1)學生名冊,結果如下:

(B)系統分析:

  • 首先利用 open_course_ID select_course 表中查詢出有哪些學生修讀此課程(學號  student_ID),如下:

select student_ID

from select_course

where open_course_ID = '1';

  • 上述查詢得到修讀學生的學號,再利用這些學號(student_ID) students 資料表中查詢學生資料。每一個學號(student_ID) 都必須查詢一次得到該學生的資料,因此必須用 in 連結,如下:

Select class_ID, student_ID, name, sex

From students

Where student_ID  in (40011111, 90209218, 90211233);

(C)程式範例:

吾人將上述兩個子查詢用 In 串接起來即可,如下:

Select class_ID, student_ID, name, sex

From students

Where student_ID  in (Select student_ID

                                   From select_course

                                  Where open_course_ID = '1');

5-3-3範例研討:查詢系所開課課程

(A)程式功能:Ex5_4

請查詢『資訊管理系』這學期開了那些課程(課程代碼 courase_ID),結果如下:

(B)系統分析:

  • 首先由 department 表中查出『資訊管理系』的系別代碼(Dep_ID),如下:

Select Dep_ID

From department

Where dep_name = '資訊管理系';                                                               

  • 再利用 dep_ID teachers 表中查詢出該系有哪些老師(teacher_ID),如下:

Select teacher_ID

From teachers

Where dep_ID = '11';                                                               

  • 再利用每位老師的 teacher_ID open_course 表中查詢出這學期他們開了那些課(course_ID),如下:

Select course_ID

From open_course

Where teacher_ID in (0107, 0108, 0113, 0114, 0116);                                                                

(C)程式範例:

吾人將上述三個子查詢用串接起來即可,如下:

Select course_ID as "課程代碼"

From open_course

Where teacher_ID in (Select teacher_ID

                                  From teachers

                                 Where Dep_ID = (Select Dep_ID

                                                              From department

                                                             Where dep_name = '資訊管理系'));

5-3-4自我挑戰:查詢系所開課詳細資料

(A)程式功能:PM5_3

延續 Ex5_4,查詢『資訊管理系』這學期開了那些課程,但須顯示各課程的詳細資料,結果如下:

(B)重點提示:

吾人將得到的 course_ID,再由 all_course (全校課程資料) 中查出課程資料即可。

5-3-5自我挑戰:查詢班級開課資料

(A)程式功能:PM5_4

請查詢『進四資管二丙』這學期開了哪些課程,結果如下:

(B) 重點提示:

  • 步驟 1利用『進四資管二丙』(class_name) classes 表中查詢出該班的代碼 class_ID

  • 步驟 2再利用 class_ID open_course 表中查詢出該班這學期開了哪些課程的課程代碼 course_ID (多筆資料)

  • 步驟 3:將每一個 course_ID all_course 表中查詢出該課程的詳細資料。

5-3-6自我挑戰:查詢課程教師

(A)程式功能:PM5_5

查詢這學期開『資料庫管理系統』課程有哪幾位老師的姓名,結果如下:

(B)重點提示:

  • 步驟 1利用『資料庫管理系統』( course_name) all_course 表中查詢出該課程的代碼 course_ID

  • 步驟 2再利用 course_ID open_course 表中查詢出有哪些老師開此課程的教師代碼 teacher_ID(多筆資料)

  • 步驟 3將每一個 teacher_ID teachers 表中查詢出該教師的姓名(name)

翻轉工作室:粘添壽

 

資料庫系統概論(含邏輯設計)

 

 

翻轉電子書系列: