issue: 
ID---KEY---createtime---updatetime----所属作业ID 
1----k1----2008/8/7-----2008/8/7------zy1 
2----k2----2008/8/7-----2008/8/7------zy1 
3----k3----2008/8/7-----2008/8/7------zy2 
4----k4----2008/8/7-----2008/8/7------zy3 
13----k4----2008/8/7-----2008/8/7------zy1 
14----k4----2008/8/7-----2008/8/7------zy1 
swork: 
ID---KEY---作业名称---布置者 
zy1--k5----XX作业----XX老师 
zy2--k6----SS作业----TT老师 
zy3--k7----JJ作业----QQ老师 
zy4--k8----OO作业----UU老师 
changegroup:
ID--------问题ID-------修改者---------修改时间 
1001-------2----------TT老师 --------200-8-8 
1002-------2----------TT老师 --------200-8-8 
1003-------2----------TT老师 --------200-8-8 
1004-------2----------QQ老师 --------200-8-8 
1005-------3----------TT老师 --------200-8-8 
1006-------3----------TT老师 --------200-8-8 
1007-------3----------TT老师 --------200-8-8 
1008-------9----------TT老师 --------200-8-8 
1009-------9----------TT老师 --------200-8-8 
1010-------13---------TT老师 --------200-9-8 
1011-------14---------TT老师 --------200-9-8 
查询要求:指定修改者 在 指定作业 修改 多少问题的日走月报我的sql
select s.作业名,c.修改者,i.ID,date_format(c.修改日期,'%Y-%m-%d')from changegroup c,issue i,swork swhere c.问题ID=i.IDAND s.ID=i.所属作业IDAND s.作业名='XX作业'AND c.修改者='TT老师'查询结果:
作业名-----------修改者---------问题ID-------修改日期
XX作业-----------TT老师---------2-----------2008-8-8
XX作业-----------TT老师---------2-----------2008-8-8
XX作业-----------TT老师---------2-----------2008-8-8
XX作业-----------TT老师---------9-----------2008-8-8
XX作业-----------TT老师---------9-----------2008-8-8
XX作业-----------TT老师---------13----------2008-9-8
XX作业-----------TT老师---------14----------2008-9-8
根据查询要求 实际效果应该是
作业名-----------修改者----------------修改日期-------修改的问题量
XX作业-----------TT老师---------------2008-8-8----------2(问题ID:2和9两个问题)
XX作业-----------TT老师---------------2008-9-8----------2(问题ID:13和14两个问题)我的SQL 该怎么改,正确的该怎么写?

解决方案 »

  1.   

    select s.作业名,c.修改者,COUNT(i.ID),MAX(Date_format(c.修改日期,'%Y-%m-%d'))
    from changegroup c,issue i,swork s 
    GROUP BY s.作业名,c.修改者
      

  2.   

    select s.作业名,c.修改者,COUNT(i.ID),date_format(c.修改日期,'%Y-%m-%d')
    from changegroup c,issue i,swork s
    where c.问题ID=i.ID
    AND s.ID=i.所属作业ID
    AND s.作业名='XX作业'
    AND c.修改者='TT老师'
    GROUP BY s.作业名,c.修改者,date_format(c.修改日期,'%Y-%m-%d')
      

  3.   

    不行   这样的结果是作业名-----------修改者---------count(问题ID)-------修改日期 
    XX作业-----------TT老师---------7------``````-----2008-8-8 
    修改多少个问题,是要排除掉重复的
      

  4.   


    select s.作业名,c.修改者,COUNT(i.ID),date_format(c.修改日期,'%Y-%m-%d')
    from changegroup c,issue i,swork s
    where c.问题ID=i.ID
    AND s.ID=i.所属作业ID
    AND s.作业名='XX作业'
    AND c.修改者='TT老师'
    GROUP BY s.作业名,c.修改者,date_format(c.修改日期,'%Y-%m-%d')
      

  5.   

    不对啊.............你还没明白我的意思吗?
    同一天  同一个问题可以出现多次修改记录,但只做1个量来算2008-8-8  问题A  有10条修改记录  问题B有5条   问题C有7条   ,但最终实际只是在这一天修改了3个问题,不是要把修改的总次数统计合
      

  6.   

    select s.作业名,c.修改者,COUNT(DISTINCT 问题ID),date_format(c.修改日期,'%Y-%m-%d')
    from changegroup c,issue i,swork s
    where c.问题ID=i.ID
    AND s.ID=i.所属作业ID
    AND s.作业名='XX作业'
    AND c.修改者='TT老师'
    GROUP BY s.作业名,c.修改者,date_format(c.修改日期,'%Y-%m-%d')
      

  7.   


    呵呵,看了楼主的sql了,我偷个懒,就沿用楼主的sql吧select s.作业名,c.修改者,count(distinct i.ID) as 修改的问题量, date_format(c.修改日期,'%Y-%m-%d') as 新修改日期from changegroup c,issue i,swork s where c.问题ID=i.ID AND s.ID=i.所属作业ID AND s.作业名='XX作业' AND c.修改者='TT老师' group by 新修改日期呵呵,楼主能看明白吗?
    group by 里面是否还加其他信息,楼主根据实际需要做吧。