大家好! 需求如下:三个表
分类表(t_cat) 主键:cat_id ,由于二级分类,所以还有一个parent_id(需求已确定只有二级分类)
产品表(t_pro) 主键:pro_id 
产品和分类是一对多的关系,所以还有一个产品关联分类表(t_pro_link_cat) 主键:(pro_id,cat_id)现在要得到所有的分类,并且要得出此分类下面所有的产品个数总和。如:
cat_id,cat_name,pro_count
  1      美容     20
求sql语句,或者思路。谢谢各位大大们。sql

解决方案 »

  1.   

    什么意思呢,如果 A 属于美容,美容属于化妆类的子类,那么统计时 A 要统计到化妆类下面吗你可以先统计对应的类,这个很容易,直接group by 即可,如果还需计入父类,你可以写个递归统计,这样比写sql容易多了
      

  2.   

    谢谢版主,目前我不需要统计父类,只需要得出每个子类下面的总数就可以了。因为t_pro_link_cat并没有存父类编号,只有存了子类编号。
      

  3.   

    select fid,fname,count(*) from A inner join B on A.id=B.id group by fid,fname
      

  4.   


    select a.*,b.cat_name from (select count(cat_id) as pro_count,cat_id from t_pro_link_cat group by cat_id) a left join t_cat  b on a.cat_id=b.cat_id
      

  5.   

    select A.cat_id,A.cat_name,count(0) as pro_count from t_cat A inner join t_pro B on A.cat_id=B.cat_id group by A.cat_id,A.cat_name 
      

  6.   

    select cat_id,cat_name,count(*)
    from t_pro_link_cat plc left join t_cat c on c.cat_id=plc.cat_id
    left join t_pro p on plc.pro_id=p.pro_id
    order by plc.cat_id,c.cat_name