作者crossdunk (鲁来又鲁去)
看板Database
标题[SQL ] 关於投票系统捞票数
时间Mon Jun 16 17:11:26 2014
小弟最近在弄一个投票的东西有个困惑
以下是三个表
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://webptt.com/cn.aspx?n=bbs/Database/M.1402909889.A.7DF.html
1F:→ bohei:有点模糊,但我猜是group by的关系吧,相同的vl_num被汇总成 06/16 17:17
2F:→ 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
3F:→ bohei:有资料结构可以看吗?(各table资料) 06/16 17:31
4F:→ bohei:加不加c.跟会不会判断B没影响喔,你做了join,B、C就是一起看 06/16 17:33
5F:→ 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
6F:→ bohei:嗯,试试group by vl_num 06/16 17:53
7F:→ bohei:且你要把B全部捞出,要用B LEFT OUTER JOIN C,可去查查OUTER 06/16 17:55
8F:→ bohei:的用法 06/16 17:55
好的 谢谢你
※ 编辑: crossdunk (59.120.19.218), 06/16/2014 18:06:00