資料庫系統理論(七)

卡式積(Cartesian Product)

注意!CROSS JOIN 會有問題

改善的方法

作法
1.透過 SELECT 指令 WHERE 部分的等式,
及對等合併(Equi-Join)。

From A,B
Where (A.c=B.c)

2.透過 SELECT 指令 FROM 部分的 INNER JOIN。
即自然合併(Natural Join);又稱為內部合併
(Inner Join)。

From A INNER JOIN B
ON A.c=B.c
範例
1.第一種做法(Equi-Join最常用)

Select 學號,姓名,課程表,課號,課程名稱,學分數
From 學生表,課程表
Where 學生表.課號=課程表.課號

2.第二種做法:INNER JOIN

SELECT 學號,姓名,課程表,課號,課程名稱,學分數
FROM 學生表 INNER JOIN 課程表
ON 學生表.課表=課程表.課表
範例
SELECT A.學號,姓名,課號,成績
(加入 投影使用者 輸出的欄位名稱)

FROM 學生資料表 AS A, 選課資料表 AS B

WHERE A.學號=B.學號
(加入 內部合併 Join)

And B.成績>=70
(加入 限制條件 成績大於或等於70分者)

GROUP BY A.學號,姓名
(使用群組化及聚合函數)

HAVING AVG(成績)>=90
(在聚合函數後,再進行篩選條件)

ORDER BY AVG(成績) ASC
(在聚合函數結果,再來進行排序-由低到高)

左外部合併

右外部合併

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料