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