--完整表達法 班級.學號=學生.學生
--合併查詢
--inner join 內部合併查詢
select 班級.*,員工.*,學生.*
--或以下
select 班級.教授編號,員工.姓名,班級.學號,學生.姓名,學生.性別,
班級.課程編號,課程.名稱,課程.學分,班級.上課時間,班級.教室
from 班級
inner join 學生 on 班級.學號=學生.學號
inner join 課程 on 班級.課程編號=課程.課程編號
inner join 教授 on 班級.教授編號=教授.教授編號
inner join 員工 on 教授.身份證字號=員工.身份證字號
order by 學生.學號
要取一個與現在表單A無關聯之表單C欄位
就必須先相關聯另一個與這兩個欄位相關連之表單B
如果沒有條件運算式則顯示就會顯示資料全部完整筆數
聚合函數 用在統計 / 報表 ( 要看什麼就丟甚麼進去 )
select 課程.課程編號,課程.名稱,count(*) as 被選課數
from 班級
inner join 課程 on 班級.課程編號=課程.課程編號
group by 課程.課程編號,課程.名稱
其實有三種寫法,且寫完結果都一樣
第二種join寫法 用包含的方式
select 班級.教授編號,員工.姓名,教授.科系,教授.職稱,班級.學號,學生.姓名,學生.性別,
班級.課程編號,課程.名稱,課程.學分,班級.上課時間,班級.教室
from 員工 inner join (教授 inner join
(課程 inner join
(班級 inner join 學生 on 班級.學號=學生.學號)
on 班級.課程編號=課程.課程編號)
on 班級.教授編號=教授.教授編號)
on 教授.身份證字號=員工.身份證字號
order by 學生.學號
第三種寫法 natural join 自然合併
會產生卡式基關聯
解決方法為使用條件運算子去塞選 多重時則用邏輯運算子 去做條件相加
select 班級.教授編號,員工.姓名,教授.科系,教授.職稱,班級.學號,學生.姓名,學生.性別,
班級.課程編號,課程.名稱,課程.學分,班級.上課時間,班級.教室
from 班級, 學生, 課程, 教授, 員工
where 班級.學號=學生.學號 and 班級.課程編號=課程.課程編號 and 班級.教授編號=教授.教授編號
and 教授.身份證字號=員工.身份證字號
order by 學生.學號
--outer join 外部合併查詢
(ex.員工4位跟教授7位筆數不同,執行內部合併只能查到是教授也是員工的,但outer join則又分為left right 以左或右為主 ,主要的表所有筆數都會出現,而另一表沒有的值)
--外部合併查詢 outer join
select *
from 員工 inner join 教授
on 員工.身份證字號=教授.身份證字號
select *
from 員工 left outer join 教授
on 員工.身份證字號=教授.身份證字號
select *
from 教授 left outer join 員工
on 員工.身份證字號=教授.身份證字號
select *
from 員工 right outer join 教授
on 員工.身份證字號=教授.身份證字號
select *
from 班級 right outer join 學生
on 班級.學號=學生.學號
where 班級.學號=null
select *
from 學生
where 生日 is null