資料庫系統概論第 六章 合併查詢操作   上一頁   

6-6 專題研討

(A) 程式功能:Ex6_7

請查詢選修『粘添壽』老師所開的『資料庫管理系統』學生的名冊,請依照班級名稱、姓名、性別,以及電話等順序印出。

(B) 系統分析:

此題目牽涉到六個資料表,如下圖所示。首先必須由 all_course teachers 兩表格中查詢到『資料庫管理系統』的課程代碼(course_ID),『粘添壽』老師的教師代碼(teacher_ID),再利用這兩個代碼由 open_course 表中查詢出開課代碼(open_course_ID)。接著,利用 open_course_ID select_course 表中查詢出有哪些學生(student_ID)選修該課程,再利用選課學生的 stucent_ID,由 students 表中查詢出學生的相關資料。

(C) 程式範例:

  • 步驟 1首先由 teachers all_course 兩表格中查詢出,『粘添壽』老師所開『資料庫管理系統』的開課代碼 (open_course_ID),,如下:

Select C.open_course_ID

From teachers as A, all_course as B, open_course as C

Where A.name = "粘添壽"

And B.course_name = "資料庫管理系統"

And A.teacher_ID = C.teacher_ID

And B.course_ID = C.course_ID;

  • 步驟 2找到開課代碼 open_course_ID後,再由 select_course 表中查詢出有哪些學生修課的 student_ID,如下:

Select D.student_ID

From teachers as A, all_course as B, open_course as C, select_course as D

Where A.name = "粘添壽"

And B.course_name = "資料庫管理系統"

And A.teacher_ID = C.teacher_ID

And B.course_ID = C.course_ID

And C.open_course_ID = D.open_course_ID;

  • 步驟 3再利用 student_ID students 表中查詢出學生資料,如下:

Select E.student_ID, E.name, E.sex, E.tel

From teachers as A, all_course as B, open_course as C, select_course as D, students as E

Where A.name = "粘添壽"

And B.course_name = "資料庫管理系統"

And A.teacher_ID = C.teacher_ID

And B.course_ID = C.course_ID

And C.open_course_ID = D.open_course_ID

And E.student_ID = D.student_ID;

  • 步驟 4再利用 class_ID classes 表中查詢出班級名稱,如下:

Select F.class_name, E.student_ID, E.name, E.sex, E.tel

From teachers as A, all_course as B, open_course as C, select_course as D,

          students as E, classes as F

Where A.name = "粘添壽"

And B.course_name = "資料庫管理系統"

And A.teacher_ID = C.teacher_ID

And B.course_ID = C.course_ID

And C.open_course_ID = D.open_course_ID

And E.student_ID = D.student_ID

And F.class_ID = E.class_ID;

  • 步驟 4:改成多重子查詢練習

請參閱 5-4 節說明

(C) 進階研究:(請自行研習)

上述查詢結果並沒有顯示該課程是開在哪一班級的班級名稱,請修改上述查詢語句,使其能顯示開在哪一班的班級名稱。

翻轉工作室:粘添壽

 

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

 

 

翻轉電子書系列: