三表联查怎么样进行积分统计,高手指教[已更新] 部门表 栏目表 
ID NAME     ID FID LMNAME   
1 部门一     1 部门ID 栏目一   
2 部门二     2 部门ID 栏目二   
3 部门三     3 部门ID 栏目三   
4 部门四     4 部门ID 栏目四   
5 部门五     5 部门ID 栏目五   
信息表     
ID FID TITLE 积分     
1 栏目 信息 2     
2 栏目 信息 2     
3 栏目 信息 5     
4 栏目 信息 4     
5 栏目 信息 3 
    
积分统计[想生成的表]   
部门名称 栏目一 栏目二 栏目三 栏目四 积分汇总   
部门一 2 2 2 2 8   
部门二 3 5 1 1 10   
部门三 1 1 1 1 4   
部门四 1 1 1 1 4   
部门五 2 2 2 2 8   
              
====================
每个部门都有自己的栏目,我现在想的是怎么样生成每个部门的栏目积分并统计,最好是能在mysql中的视图中生成,高手指点一下,不胜感激!

解决方案 »

  1.   

    没有看出表间关系,参考:
    sum(case when)
      

  2.   

    信息表的fid关联栏目表的id,栏目表的fid关联部门的部门表的id
      

  3.   

    select a.NAME,sum(c.积分) as 积分汇总 ,
    sum(if(b.LMNAME='栏目一',c.积分,0)) as 栏目一,
    sum(if(b.LMNAME='栏目二',c.积分,0)) as 栏目二 ,
    sum(if(b.LMNAME='栏目三',c.积分,0)) as 栏目三,
    sum(if(b.LMNAME='栏目四',c.积分,0)) as 栏目四
    from 部门表 a 
    left join 栏目表 b on a.id=b.fid
    left join 信息表 c on b.id=c.fid
    group by a.NAME
    也可以用CASE WHEN