Table_1 是類別資料
Table_2 是各類別出現紀錄
為了想要得知各類別的發生次數,沒出現的類別也要顯示出來,故只好使用 Left Join,但是 Count(*) 出來的資料至少都為1 (即使該類別沒出現過)。
Select a.*, Count(*)
From Table_1 a
Left Join Table_2 b on a.PK = b.FK
害我只好改寫成如下(感覺是很笨的寫法....但是也不知該怎麼改...)
Select a.*, (Select Count(*) From Table_2 b Where a.PK = b.FK)
From Table_1 a
只是資料量大時,查詢的時間好久喔!上網意外搜尋到這網頁 (COUNT on LEFT JOIN),終於解決我的疑惑啦!
Select a.*, Count(FK)
From Table_1 a
Left Join Table_2 b on a.PK = b.FK
原來
Count(*) 計算全部
Count(PK) 計算 Table_1 (其實 Count(*) = Count(PK) 吧~)
Count(FK) 計算 Table_2
看來腦子太久沒用囉.......該常常上網學習刺激一下啦!!!
文章標籤
全站熱搜

感謝您提供的好方法, 雖然文章有點久了, 但有幾點小發現跟您分享一下, 很多不同TABLE會共用相同欄位名, 因此可以將Count(PK)改成Count(a.PK), 這樣即使兩個欄位名稱都一樣也能使用, 另外, 最後應該還要加上Group a.PK, 不然可能會導致資料顯示錯誤。