如何实现统计学生作业的一个SQL语句
现有三张表一个是学生基本信息表(保存学生的姓名,学号等基本信息),一个是作业提交信息表(保存作业的提交记录,报考学生学号,作业编号等),一个是作业信息表(保存每一次发布的...
现有三张表 一个是学生基本信息表(保存学生的姓名,学号等基本信息),一个是作业提交信息表(保存作业的提交记录,报考学生学号,作业编号等),一个是作业信息表(保存每一次发布的作业信息,作业编号,发布时间,截止时间)
现在要实现自动统计已经上交作业的名单和未上交作业的名单 该如何写sql语句 请说下思路
如果数据库建立不恰当,也可以对数据库做修改 谢谢! 展开
现在要实现自动统计已经上交作业的名单和未上交作业的名单 该如何写sql语句 请说下思路
如果数据库建立不恰当,也可以对数据库做修改 谢谢! 展开
2013-12-26
展开全部
感觉你说的三个表格跟你要实现的结果有些不相关啊!
学生基本信息表(姓名,学号)这表基本算是可以
作业提交信息表(作业的提交记录,报考学生学号,作业编号等),提交记录?如果学生重复提交呢?就有问题了,还有报考学生?做作业跟报考没关吧。
建议修改为:作业提交信息表(学号,作业的是否已交,作业编号)
作业信息表(作业信息,作业编号,发布时间,截止时间)这个表格这样可以了
思路:
1.学生基本信息表.学号=作业提交信息表.学号,必须是本班同学才管,其它班的不管
2.作业提交信息表.作业编号=作业信息表.作业编号,保证所做的题目是作业布置的
3.重点:作业提交信息表.作业的是否已交设为逻辑性,0表示未交过1表示已交,不管是作业是否完整上交,只要上交过一次,都改为1;
4.最后一步:学生基本信息表.学号=作业提交信息表.学号 and 作业提交信息表.作业的是否已交=0 表示未交作业,如果是1表示已经交了作业了.
以上四步是判断面置一次作来,谁没有完成的,如果有多次,也就是作业编号有N个的话,加个循环就行了.
学生基本信息表(姓名,学号)这表基本算是可以
作业提交信息表(作业的提交记录,报考学生学号,作业编号等),提交记录?如果学生重复提交呢?就有问题了,还有报考学生?做作业跟报考没关吧。
建议修改为:作业提交信息表(学号,作业的是否已交,作业编号)
作业信息表(作业信息,作业编号,发布时间,截止时间)这个表格这样可以了
思路:
1.学生基本信息表.学号=作业提交信息表.学号,必须是本班同学才管,其它班的不管
2.作业提交信息表.作业编号=作业信息表.作业编号,保证所做的题目是作业布置的
3.重点:作业提交信息表.作业的是否已交设为逻辑性,0表示未交过1表示已交,不管是作业是否完整上交,只要上交过一次,都改为1;
4.最后一步:学生基本信息表.学号=作业提交信息表.学号 and 作业提交信息表.作业的是否已交=0 表示未交作业,如果是1表示已经交了作业了.
以上四步是判断面置一次作来,谁没有完成的,如果有多次,也就是作业编号有N个的话,加个循环就行了.
2013-12-26
展开全部
已上交
select * from 学生基本信息表,提交信息表 where 学生基本信息表.学号=提交信息表.学号
未上交
select * from 学生基本信息表,提交信息表 where 学生基本信息表.学号<>提交信息表.学号
记得万不得已不要用in 太占资源,影响速度!
select * from 学生基本信息表,提交信息表 where 学生基本信息表.学号=提交信息表.学号
未上交
select * from 学生基本信息表,提交信息表 where 学生基本信息表.学号<>提交信息表.学号
记得万不得已不要用in 太占资源,影响速度!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-26
展开全部
使用子查询,思路而已,未经测试。
select 学生姓名 from 学生表 where 学生学号 in (selec 学生学号 from 作业表 where 作业编号=某编号)
select 学生姓名 from 学生表 where 学生学号 in (selec 学生学号 from 作业表 where 作业编号=某编号)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询