以上功能怎么用存储过程实现 以上的count有可能是通过某种计算方式得出  

解决方案 »

  1.   

    A表 
    id   name
    1    一年级
    2    二年级
    3    三年级 B表  
    id  parentId name
    1     1       a
    2     1       b
    3     2       c
    4     3       d
    5     1       e
    6     2       f想要的结果
    id  name   count 
    1   一年级  3
    2   二年级  2
    3   三年级   1
      

  2.   

    select a.name,count(b.id)
    from a left join b on a.id=b.parentId group by a.name
    order by a.name,2
      

  3.   


    如果我的count是根据某种计算方式计算呢
      

  4.   

    详细说明
    SUM(IF(条件=...,1,0))
      

  5.   

    1、能否达到目的;
    2、索引情况如何,在条件、 分组字段上建立索引试试;
    3、EXPLAIN SQL语句
      

  6.   

    select d.*,count(e.id) as openNumber from (select a.*, b.cardworth, c.trueName 
    from CardTask a, CardType b,UserManager c where a.typeId = b.id  and a.adminName = c.userId   ) d left join CardCenter e on d.id = e.TaskId and e.isflag=1 group by d.id order by d.id desc
      

  7.   

    select d.*,count(e.id) as openNumber from (select a.*, b.cardworth, c.trueName  
    from CardTask a, CardType b,UserManager c where a.typeId = b.id and a.adminName = c.userId ) d left join CardCenter e on d.id = e.TaskId and e.isflag=1 group by d.id order by d.id desc
    上面是我的项目语句 我感觉左连接这种太费时间了  我的CardCenter表数量相当大 上百万千万呢  这种方式的查询效率不行  我以前是先查询select a.*, b.cardworth, c.trueName  
    from CardTask a, CardType b,UserManager c where a.typeId = b.id and a.adminName = c.userId  然后根据taskID去CardCenter 表查询数量 然后再封装 感觉有点慢  你这样效率更慢了
      

  8.   

    索引情况如何,在ID、TaskId、isflag上建立索引 没有,去掉ORDER BY速度如何
      

  9.   

    你的SQL语句不是标准的 LEFT JOIN->INNER JOIN
    select B.id,B.cardworth, c.trueName, COUNT(e.id)  
    from CardTask a 
    INNER JOIN CardType b ON a.typeId = b.id
    INNER JOIN UserManager c ON and a.adminName = c.userId
    INNER JOIN CardCenter e on A.id = e.TaskId and e.isflag=1 
    group by B.id,B.cardworth, c.trueName  order by B.id desc
      

  10.   

    select a.id.a.name,count(*)
    from a inner join b on  a.id=b.parentId
    group by a.id.a.name
      

  11.   

    用存储过程怎么写啊  count有可能是通过某种计算方式得出 
      

  12.   

    那举个实际例子说明吧。 (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  13.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  14.   

    select id,name, (select count(*) from b where parentId=a.id)
    from a
      

  15.   

    参考另1帖子:
    http://topic.csdn.net/u/20120613/18/ea83cb69-1cd4-457f-8ad0-856a17883d16.html?25664