問題:顯示課程名稱和計算每一門課程有多少位學生選修
訊息 8120,層級 16,狀態 1,行 1
資料行 'courses.c_no' 在選取清單中無效,因為它並未包含在彙總函數或 GROUP BY 子句中。
我後來有做出一個
select tittle, count( * ) as 人數
from courses inner join classes
on courses.c_no = classes.c_no
group by tittle
而dino0315大大的答案完全正確
差別在於一個有顯示0人數的科目一個沒有
select a.tittle, count(b.c_no) AS 人數 //這邊count(b.c_no) 如果我改成count( * ) 答案會不同為什麼?
from
courses as a
left join
classes as b
on a.c_no = b.c_no
group by a.tittle
請問一下
我會做是會做
不過想法我完全不懂
可以解釋一下嗎?
我知道有
inner join
left join
right join
full join
可是不會使用...
s211322 wrote:
pilot0401大...(恕刪)
你跑一下
select a.c_no, a.titile, b.sid, b.c_no as b_c_no
from courses a left join classes b on a.c_no = b.c_no
比對每一筆的資料 就會知道 Count(...) as 人數 數字結果等於出現的資料筆數
inner join 可視為交集... (兩邊都有資料)
left join 就是 left 一定都要出現 (無論右邊的 table 有無資料)
用 inner join 或 left join 要看你輸出的樣子
inner join 表示 有學生選課的課程才出現
left join 表示, 所有課程都顯示, 無論有沒有學生選課
Nikon D90(MB-D80) + 17-55 + 28-70 + N35.2 + N50.4 + SB-800(SD-8A) + T124
內文搜尋

X