现有四个表
Departments   此表包含需要统计的部门id(DepID),部门名称(DepName)
Users         此表包含上述部门对应的用户    UserName(一个DepID对应多个用户)
ContentBaseInfo  此表包含上表用户发布的文章(需加时间区间筛选)AskAnswerMain 此表包含各部门id(DepID)对信件的处理状态(DoState)
现要达到以下查询结果
DepName(部门名称)   Count(本部门所有文章数量)   Count(本部门所有信件处于DoState=4的数量)感觉好难啊,求高手

解决方案 »

  1.   


    select a.depname,count(c.id) as cnum,count(d.id) as dnum
    from Departments a left join Users b on a.id = b.depid
                       left join ContentBaseInfo c on b.id = c.userid
                       left join AskAnswerMain d on a.id = d.depid and d.dostate = t
    group by a.depname
      

  2.   


    select a.depname,count(c.id) as cnum,count(d.id) as dnum
    from Departments a left join Users b on a.id = b.depid
                       left join ContentBaseInfo c on b.id = c.userid
                       left join AskAnswerMain d on a.id = d.depid and d.dostate = 4
    group by a.depname
      

  3.   

    left join ContentBaseInfo c on b.id = c.userid
    left join ContentBaseInfo c on (b.UserName 这里需要模糊等于 c.Editor)
    类似一个模糊查询,应该怎么写呢
    其他功能都实现了就差这一点了
      

  4.   

    on charindex(b.username,c.editor) > 0
      

  5.   

    left join ContentBaseInfo c on b.id = c.userid and on charindex(b.username,c.editor) > 0???
      

  6.   

    left join ContentBaseInfo c on b.id = c.userid
    这里不是id的比较,而是部门下的用户和文章的作者的比较,部门下的用户名比如是(ABC),但是ABC发表的文章署名就是(ABC部门名称)