
卡式積(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
(在聚合函數結果,再來進行排序-由低到高)

左外部合併


右外部合併



