我们的业务中有一个简单的一对多模型:
- 有三个schema a b c
- a与b 为 一对多
- b与c 为 一对多
需求如下:
现在想把所有的a的项目列出来,并查出与a有关联的b有多少个(大于等于0),还有查出与a相关的c有多少个(大于等于0)
这样的sql在MySQL
中应该怎么写
PS: 尽量减少使用子查询的方式。
谢谢各位了~
我们的业务中有一个简单的一对多模型:
需求如下:
现在想把所有的a的项目列出来,并查出与a有关联的b有多少个(大于等于0),还有查出与a相关的c有多少个(大于等于0)
这样的sql在MySQL
中应该怎么写
PS: 尽量减少使用子查询的方式。
谢谢各位了~
结果集1:查询b表、c表关联group by a表主键(b表中应该有)统计出与a表相关的c表数据条数;
结果集2:查询b表group by a表主键(b表应该有)统计出与a表相关的b表数据条数;
查询a表 分别left join 结果集1和2 就能得到想要的数据了。
严格范式的表结构设计很难避免子查询的方式,可以接受冗余的话就在b和c存一个a的关联ID,这样查询就只是单表查询统计了,用空间换时间;
还有一种方法是在a(或者新增一张统计表)里面增加两个统计字段,分别表示关联b和c的数量,查询非常简单,就是更新维护数量比较麻烦。
4 回答1.4k 阅读✓ 已解决
8 回答1.3k 阅读
3 回答1k 阅读✓ 已解决
2 回答1.7k 阅读
3 回答822 阅读✓ 已解决
2 回答1.5k 阅读
1 回答876 阅读✓ 已解决
大家好,不好意思,可能是业务特殊性,我已经自己找到答案了。
这个可以实现我的需求,大家也可以自己尝试一下。
过一会我给贴出示例。。