mysql表名叫 eee id name renwulb(任务类别) content(任务细节) atime(时间)
                 1 小王 扫地                      清扫了好       2013-05-04 12:07:06
                 2 小王 擦玻璃                    擦不干净       2013-05-05 12:07:06
                 3 小李 做饭                       做不好         2013-05-08 12:07:06
全部人员表叫ppp   id name
全部任务表叫rrr   id renwu
 
希望结果是
 
小王      扫地5次   擦玻璃0次    做饭10次   
小李      扫地0次   擦玻璃0次    做饭5次mysq求sql

解决方案 »

  1.   

    详细说明,
    select name,sum(if(renwulb='扫地',1,0)),
    sum(if(renwulb='擦玻璃',1,0)),sum(if(renwulb='做饭',1,0))
    from tt group by name
      

  2.   

    select name, 
    (select count(*) from eee where renwulb='扫地' and name=ppp.name) as `扫地`,
    (select count(*) from eee where renwulb='擦玻璃' and name=ppp.name) as `擦玻璃`,
    (select count(*) from eee where renwulb='做饭' and name=ppp.name) as `做饭`
    from ppp
      

  3.   

    全部任务表叫rrr   id renwu  里面不只是扫地'擦玻璃''做饭' ,比如还有,洗床单————等,大家都没有干,就是0次
      

  4.   

    可以试一下下面这个语句:
    select distinct p.name as '姓名',sum(case r.renwulb when '扫地' then 1 else 0 end) as '扫地次数',sum(case r.renwulb when '擦玻璃' then 1 else 0 end) as '擦玻璃次数',sum(case r.renwulb when '做饭' then 1 else 0 end) as '做饭次数' from ppp p,rrr r;表名可能有点混,自己调调!
      

  5.   

    这个用case when 加上分组函数就可以解决,4楼的做法,比较赞同~