資料庫程式設計 – PHP+MySQL :第 八章 合併查詢程式 上一頁 |
8-5 自我挑戰
8-5-1 自我挑戰:查詢各班名冊 (A) 系統功能:PM7_1 學務處需要一個可以查詢各班名冊的網頁,期望查詢網頁如下:
執行結果網頁如下:
(B) 系統分析 在第六章 Ex6_4 利用巢狀查詢做過同樣的需求,先利用班級名稱(class_name)由 classes 表查詢出相對應的 class_ID,再利用 = 連結,由 students 表內查詢出該學生的名冊。
如果用合併查詢方法,則將 students 與 classes 做 Join 乘積運算,得到所有可能的組合後,再篩選 classes.class_name= 所欲查詢的班級,又 students.class_ID = classes.class_ID 兩條件。下圖是 students × classes 所得到每一筆記錄的組合,在這些組合中,我們篩選 class_name = 所欲查詢的班級名稱,則它相對應的 class_ID 與 students.class_ID 是相同的話,則表示該學生是屬於這一班。滿足這兩條件的記錄,我們只要擷取 students 各欄位資料即可。
(C) 執行網頁的提示:PM7_1-action.php
8-5-2 自我挑戰:查詢班級開課 (A) 系統功能:PM7_2 學務處需要一個用班級名稱,可以查詢到該班級學期所開的課,期望表單網頁如下:
執行網頁如下:
(B) SQL 系統分析 此網頁功能與 Ex7_3 非常相似,如果用巢狀技巧的話,先由 classes 表找到該班的 class_ID,再利用它由 open_course 表查詢到該班這學期開了哪些課(不只一門,所以用 in 連結),再利用 course_ID 由 all_course 查詢出該課程的詳細資料。
如果用合併查詢的話,查詢網頁會開啟 classes 表,請它傳遞所選班級的 class_ID,執行網頁就僅合併 open_course 與 all_course 兩張資料表即可,篩選條件為 A.class_ID = $class_ID 與 A.course_ID = B.course_ID 即可。 『執行網頁』的 SQL 程式如下:
|
翻轉工作室:粘添壽
資料庫程式設計:
翻轉電子書系列:
|