[SQL ] 關於投票系統撈票數(已解決,感謝!)
小弟最近在弄一個投票的東西有個困惑
以下是三個表
A表 存會員資料,需要用到的只有ID這個欄位
B表 存有哪些作品(被投票),vl_num 這個欄位為他的編號
C表 存了vl_num 跟 會員資料表中的ID,來代表會員中的誰投給了誰
以及本身的AUTO碼為vf_num
現在我想要的是能將B表的東西全部列出來
並計算他在C表中有幾個人投給他
以下是我的SQL
SELECT `b`.vl_num as vl_num,count(`c`.vf_num) as vote_num
FROM `b`
left join `c` on `b`.vl_num = `c`.vl_num
group by `c`.vl_num
order by `b`.vl_num
但是這樣顯示出來只有顯示4個
而我在B表中有十筆資料,用left join 不是應該b表的資料都會出現嗎@@?
如果是說C表有B表才會有也很奇怪,因為我C表裡面用到B表的只有三筆
如果我用普通的join就是出現三筆沒錯,但我用left join 反而出現四筆
但我B表內有十筆呀!
請問各位先進這是為什麼呢?
煩請指點小弟了!
謝謝!
--
Sent from my 3cm
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.19.218
※ 文章網址: http://www.ptt.cc/bbs/Database/M.1402909889.A.7DF.html
→
06/16 17:17, , 1F
06/16 17:17, 1F
→
06/16 17:17, , 2F
06/16 17:17, 2F
請問是哪邊糢糊呢@@?
group by(C.vl_num) 是為了count(vf_num)
我有+了c.他還會判斷到B資料表的嗎QQ
※ 編輯: crossdunk (59.120.19.218), 06/16/2014 17:21:12
→
06/16 17:31, , 3F
06/16 17:31, 3F
→
06/16 17:33, , 4F
06/16 17:33, 4F
→
06/16 17:33, , 5F
06/16 17:33, 5F
好的 等等更新
放上資料結構@@
※ 編輯: crossdunk (59.120.19.218), 06/16/2014 17:34:34
http://ppt.cc/pbIr
左邊為B表,右邊為C表
A表為會員資料而已@@,有用到的就是ctm_id這個欄位!
※ 編輯: crossdunk (59.120.19.218), 06/16/2014 17:38:03
我發現問題在哪了!!
我應該要用group by vl_num 而不是 c.bl_num
因為已經JOIN在一起了...(應該是這樣吧?)
感謝樓上大大!
※ 編輯: crossdunk (59.120.19.218), 06/16/2014 17:43:39
→
06/16 17:53, , 6F
06/16 17:53, 6F
→
06/16 17:55, , 7F
06/16 17:55, 7F
→
06/16 17:55, , 8F
06/16 17:55, 8F
好的 謝謝你
※ 編輯: crossdunk (59.120.19.218), 06/16/2014 18:06:00