6-3 兩表格合併查詢
6-3-1 表格合併語法 內部合併又稱為『條件式合併』,也就是交叉合併再加上倆資料表之間的『條件限制』,或稱為『對應』關係的合併。也就是說,兩資料表之間必定存在一個或多個屬性的『比較關係』,包括相等(=)、不相等(<>)、大於(>)、小於(<)、等等符號。 內部合併語法如下:
輸出虛擬表格的欄位數量與交叉合併相同,但資料筆數僅滿足條件部分,如下圖所示:
6-3-2 範例研討:查詢各系系主任 (A) 程式功能:Ex6_2 請查詢出各系主任資料,列印出:系別名稱、系主任姓名、電話與地址。 (B)系統分析: 系別名稱是登錄在 department 表內,至於誰是系主任,則登錄在 teachers 表中 title =系統主任,他們之間是利用 dep_ID 欄位關聯。
(C)程式範例:
我們可以發現,虛擬表格也是 10 個欄位 (department + teachers),但資料筆數還非常多。原因是每位系主任的資料還交叉混合到其他系資料內,因此需資料另一個過濾條件。
已可以過濾取得各系主任資料,但並非所有資料都要輸出,僅擷取部分資料即可,如下:
6-3-3 範例研討:查詢班級名冊 (A) 程式功能:Ex6_3 請查詢『進四資管二丙』班級學生名冊,請列印出:班別名稱、姓名、性別、電話與地址。 (B) 系統分析: 全校學生資料是登錄在 students 表內,至於是哪一班級的學生,則利用 class_ID 標示,但 class_ID 對應到班級名稱則登錄在 classes 表內。因此, students.class_ID 與 classes.class_ID 之間建立了關聯。
(C) 程式範例:
我們可以發現,虛擬表格也是 11 個欄位 (students + classes),但資料筆數還非常多。原因是每位系主任的資料還交叉混合到其他系資料內,因此需資料另一個過濾條件。
6-3-4 範例研討:查詢系所課程規劃資料 (A) 程式功能:Ex6_4 請查詢『資訊管理系』全學年規劃有那些課程,請依照:系別名稱、課程代碼、課程名稱、學分數、必選修之順序印出。 (B) 系統分析: 全校各系所規劃的課程全部登錄於 all_course 表內,但該表以 dep_ID 標示哪一系所規劃之課程,又 dep_ID 對應到哪一夕,則登錄於 department 表內。因此,我們將 all_course 與 department 兩表個合併後,取 department.dep_ID = all_course.dep_ID,必且過濾 depart_name = “資訊管理系”,如下圖所示。
(C) 程式範例:
6-3-5 範例研討:表格與自己合併 (A) 程式功能:Ex6_5 請查詢全校內姓名相同的學生。 (B) 系統分析: 全校學生資料都登錄於 students 資料表內,將該表格自我合併,找出姓名相同,但學號不同的學生,印出其資料即是。 (C) 程式範例: Students 表格自我合併語法如下:
6-3-6 自我挑戰:查詢各系班級名稱 (A) 程式功能:PM6_1 查詢『資訊管理系』有哪些班級,並印出系別名稱、班級代碼與班級名稱,查詢結果如下:
(B) 系統分析: 全校班級都登錄於 classes 表內,並且 dep_ID 標示是屬於哪一系別,但 dep_ID 對應到系別名稱則登錄於 department 表內。則必須將 classes 與 department 兩表交叉合併如下:
|
翻轉工作室:粘添壽
資料庫系統概論(含邏輯設計)
翻轉電子書系列:
|