看板 Database 關於我們 聯絡資訊
小弟最近在弄一個投票的東西有個困惑 以下是三個表 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
bohei:有點模糊,但我猜是group by的關係吧,相同的vl_num被彙總成 06/16 17:17
bohei:一筆了 06/16 17:17
請問是哪邊糢糊呢@@? group by(C.vl_num) 是為了count(vf_num) 我有+了c.他還會判斷到B資料表的嗎QQ ※ 編輯: crossdunk (59.120.19.218), 06/16/2014 17:21:12
bohei:有資料結構可以看嗎?(各table資料) 06/16 17:31
bohei:加不加c.跟會不會判斷B沒影響喔,你做了join,B、C就是一起看 06/16 17:33
bohei:不然他也不會讓你過那個group 06/16 17:33
好的 等等更新 放上資料結構@@ ※ 編輯: 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
bohei:嗯,試試group by vl_num 06/16 17:53
bohei:且你要把B全部撈出,要用B LEFT OUTER JOIN C,可去查查OUTER 06/16 17:55
bohei:的用法 06/16 17:55
好的 謝謝你 ※ 編輯: crossdunk (59.120.19.218), 06/16/2014 18:06:00