小弟最近在弄一個投票的東西有個困惑
以下是三個表
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表內有十筆呀!
請問各位先進這是為什麼呢?
煩請指點小弟了!
謝謝!
作者:
bohei (run and fall)
2014-06-16 17:17:00有點模糊,但我猜是group by的關係吧,相同的vl_num被彙總成一筆了有資料結構可以看嗎?(各table資料)加不加c.跟會不會判斷B沒影響喔,你做了join,B、C就是一起看不然他也不會讓你過那個group嗯,試試group by vl_num且你要把B全部撈出,要用B LEFT OUTER JOIN C,可去查查OUTER的用法