sql语句问题

表A 有id name 字段
表B 有id a_id 字段
A的id与B的a_id是一对多的对应关系。
比如
A表有以下数据:
id name
1 aaa
2 bob
3 ccc
4 ddd
B表有以下数据
id a_id
1 1
2 1
3 2
4 1
想要得到表A的所有数据 表B分组的对应A的总和
用这样的sql语句
select A.*,count(B.id) as c from A,B where A.id = B.a_id and e.{$b} GROUP BY B.a_id order by c desc
结果是这样的
id name c
1 aaa 3
2 bob 1
这样能出来我想要的结果,但是如果B表中没有某个a_id,那A表的数据也不显示。
我想让他把表A的数据全部显示,也就是把下面的两条都显示上。怎么写sql语句呢?
id name c
3 ccc 0
4 ddd 0

阅读 2.5k
1 个回答

你的写法是内连接,用左外连接就可以了:

select A.*,count(B.id) from A
left join B on A.id=B.a_id
group by A.id
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题