求几句SQL~~~~~~~~~100分

Lie_li 2008-10-27 10:11:02
问题表:
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


作业表:
ID---KEY---作业名称---布置者
zy1--k5----XX作业----XX老师
zy2--k6----SS作业----TT老师
zy3--k7----JJ作业----QQ老师
zy4--k8----OO作业----UU老师


修改记录表
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

注:一个修改着可重复修改1个问题多次也可修改别的问题


修改详细表
ID---------修改记录ID----------修改的地方
10001--------1001---------------问题内容
10002--------1001--------------加了条批注
10003--------1001---------------删了条批注
10004--------1002---------------加了赞美语

注:每次修改可同时修改一个问题的多个地方


问题表与作业表 由问题表的‘所属作业ID’和作业表的ID关联

问题表与修改记录表 由问题表的ID与修改记录表的问题ID关联

修改记录表与修改详细记录表 由修改记录表的ID关联


查的是...............

指定修改者 在指定的作业 一共修改了多少问题,修改的地方各种种类分别是多少个




我现在的SQL
select a.修改者,date_format(a.修改日期),b.修改的类别
from 问题表 i,作业表 p,修改记录表 a,修改详细记录表 b
where i.所属作业ID=p.作业ID
and i.问题ID=a.问题ID
and a.ID=b.修改表ID

and a.修改者=‘XX’
and p.作业名=‘asdasdasd’


我想查出来的效果是

修改者-------2008-8-8---------一共修改了多少---------加了赞美语有占几个----加了条批注占几个---**占几个---YY占几个
...全文
54 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mschen 2008-10-27
  • 打赏
  • 举报
回复
--如果不是问题的个数,那么只要count(*)就可以了,如下:

select a.修改者,
date_format(a.修改日期,'%Y-%m-%d') as 修改日期,
count(*) as 一共修改了多少,
sum(case b.修改的地方 when '加了赞美语' then 1 else 0 end) as 加了赞美语有占几个,
sum(case b.修改的地方 when '加了条批注' then 1 else 0 end) as 加了条批注占几个,
sum(case b.修改的地方 when '删除文字' then 1 else 0 end) as 删除文字占几次
from 问题表 i,作业表 p,修改记录表 a,修改详细记录表 b
where i.所属作业ID=p.作业ID
and i.问题ID=a.问题ID
and a.ID=b.修改表ID
and a.修改者=‘XX’
and p.作业名=‘asdasdasd’
group by a.修改者,date_format(a.修改日期,'%Y-%m-%d');
Lie_li 2008-10-27
  • 打赏
  • 举报
回复
我的SQL

select a.修改者,date_format(a.修改日期),b.修改的类别
from 问题表 i,作业表 p,修改记录表 a,修改详细记录表 b
where i.所属作业ID=p.作业ID
and i.问题ID=a.问题ID
and a.ID=b.修改表ID

and a.修改者=‘XX’
and p.作业名=‘asdasdasd’



查出来的效果是

修改者---------修改日期------------修改类别
张三------------05-8-8------------修改注释
张三------------05-8-8------------添加注释
张三------------05-8-8------------删除一段文字
张三------------05-8-8------------修改注释

张三------------06-8-8------------修改注释

张三------------09-8-8------------删除一段文字



而我需要查出来的是,把上面的归类就成为

修改者-----修改日期-------一共修该几次-------修改注释占几次-------添加注释占几次----删除文字占几次
张三--------05-8-8----------4----------------2--------------------1---------------1
张三--------06-8-8----------1----------------1--------------------0---------------0
张三--------09-8-8----------1----------------0--------------------0---------------1


最终效果就像这样的
mschen 2008-10-27
  • 打赏
  • 举报
回复
--试试下边这个,可以扩充sum来添加你想统计的种类.

select a.修改者,
date_format(a.修改日期,'%Y-%m-%d') as 修改日期,
count(distinct i.ID) as 一共修改了多少,
sum(case b.修改的地方 when '加了赞美语' then 1 else 0 end) as 加了赞美语有占几个,
sum(case b.修改的地方 when '加了条批注' then 1 else 0 end) as 加了条批注占几个
from 问题表 i,作业表 p,修改记录表 a,修改详细记录表 b
where i.所属作业ID=p.作业ID
and i.问题ID=a.问题ID
and a.ID=b.修改表ID
and a.修改者=‘XX’
and p.作业名=‘asdasdasd’
group by a.修改者,date_format(a.修改日期,'%Y-%m-%d')
wwwwb 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Lie_li 的回复:]
我查不出来 怎么帖  = =
[/Quote]
用你自己的数据,计算出计算答案总可以吧?
Lie_li 2008-10-27
  • 打赏
  • 举报
回复
我查不出来 怎么帖 = =
wwwwb 2008-10-27
  • 打赏
  • 举报
回复
正确结果贴出来看看

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧