之前的一个表之间的关联我没能查出来

65.  现在要做这个分销商没有个数,你也得在报表图上出来,这个怎么写。


66.  a.name拿到数据字典里面的name字段
select a.name,count(*) from t_data_dict a join
t_client b on a.id=b.client_level_id group by a.name     因为这里有聚合函数,所以你得用分组函数来分。   现在一查效果是
一级分销商  4
二级分销商  1
三级分销商  1
 
现在效果是出来了,但是我们的要求是没有的也得出来,有一个四级分销商,但是,四级对应的另一张表里面确实没有记录啊,

你看上面 是用什么连接啊,内连接,这个是把相等的拿出来,肯定不能用这种连接了啊,要不然怎么满足要求啊,


67.  你看这两张表以谁为主呢?肯定是数据字典啊,数据字典表在左边,你得用左连接,在右边你就用右连接,但是这么 一查
select a.name,count(*) from t_data_dict a left join
t_client b on a.id=b.client_level_id group by a.name
他把数据字典里面的什么中药啊箱啊,片啊,这些东西全查出来了,而且count(*)字段还是一个1


68.  这肯定不对我们 要的是级别
  select a.name,count(*) from t_data_dict a left join
t_client b on a.id=b.client_level_id where a.category='A' group by a.name
他的分销商级别是A.这样就对了。

69. 现在效果出来 了
一级分销商  4
二级分销商  1
三级分销商  1
四级分销商  1

这个四级应该是没有的啊,怎么也是1啊,因为你使用了左连接,他和右边一连接,不管你有没有那都是有一个了。
 

70.  所以主要取决于  count(*) 的事。count(*)他是不管的,只要你占一行在那他就统计一下,你这样就  select count(client_level_id) from t_clietn;他就会把不为空的拿出来。


71.  所以你应该在count里面以一个为准
  select a.name,count(b.client_level_id) from t_data_dict a left join
t_client b on a.id=b.client_level_id where a.category='A' group by a.name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值