关联查询的sql问题

jquery-php 发布于 2018/07/26 09:05
阅读 125
收藏 0

b表和a表关联的个数,作为a表的一个字段

我的sql是这样:
SELECT a.*, count(b.option_id) as count
FROM sht_vote_option a
LEFT JOIN sht_user_vote b ON a.id = b.option_id
WHERE a.vote_id = {$id}
GROUP BY b.option_id

a表有6条数据,只有前2条在b表中有关联数据,但是只输出了前3条,也就是没关联数据的只返回了一条,为什么会这样?

加载中
0
DeMoNHaDeS
j
jquery-php
回复 @DeMoNHaDeS : 这条语句把a.id = 1 的counter = 2了。 实际应该是id = 1和id = 2,都是counter = 1
DeMoNHaDeS
DeMoNHaDeS
回复 @jquery-php : SELECT a.*, b.counter FROM sht_vote_option a LEFT JOIN (SELECT option_id, count(*) as counter FROM sht_user_vote ) b ON a.id = b.option_id WHERE a.vote_id = {$id}
j
jquery-php
回复 @DeMoNHaDeS : 明白了,前两条有数据,后四条没数据,都是null,所以只输出了一条,改成group by a.id就好了。 我知道group 应该和统计函数一起用,但是像我这个需求,要a表的所有字段外加b表的条数,应该怎么设计?
DeMoNHaDeS
DeMoNHaDeS
回复 @jquery-php : GROUP BY的作用是分类汇总,null的就保留了一条。GROUP BY还查询 * 本来就是很不规范的写法,严格模式下是要报错的,看到这种也别关心输出了什么了
j
jquery-php
GROUP BY b.option_id 不对吗,详细指点一下呗,谢谢
返回顶部
顶部