一百分一个按条件加分的问题,想得有点头晕

bbhere 2011-01-18 10:14:15
脑袋乱乱的,想不清楚,还是请大家帮忙想想了,谢谢。

简单说就是一个考生表,基本信息字段若干,加分字段3个(加分1,加分2,加分3)
一个加分设置表,存的三个加分的条件,和满足条件的加分分数
一个条件互斥表,有可能某两个加分条件互斥,即当满足两个加分条件时只能有一个加分,加分值高的那个
还有个加分最大值,及加分总分不能超过多少。

最简单的情况是没有条件互斥限制和加分最大限制
update 考生表 set 加分1=加分分数1 where 加分条件1
update 考生表 set 加分2=加分分数2 where 加分条件2
update 考生表 set 加分3=加分分数3 where 加分条件3
update 考生表 set 成绩=成绩+加分1+加分2+加分3

可一加互斥和加分限制,就想不清楚了。。。
...全文
179 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
renwenli07461 2011-01-19
  • 打赏
  • 举报
回复
--一个条件互斥表,有可能某两个加分条件互斥,即当满足两个加分条件时只能有一个加分,加分值高的那个还有个加分最大值?
在条件中可以把加分条件用partition by 按升序排序,然后取其中升序排序中的第一条记录,就是你要的结果了。
--加分总分不能超过多少?
限制一下总分的值在多少


partition by 使用方法:
http://blog.163.com/soli1988_blog/blog/static/176895272201011244516473/
bbhere 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wxf163 的回复:]
加分1,加分2,加分3
每个加分项取值区间,你都可以通过程序客户端验证规则 来实现啊,在更新的时候 判断一下就行了
被你搞的越来越复杂
[/Quote]

如果循环每个考生来判断我知道的,
我想知道这种情况能不能只用SQL语句来实现,呵呵
王向飞 2011-01-18
  • 打赏
  • 举报
回复
加分1,加分2,加分3
每个加分项取值区间,你都可以通过程序客户端验证规则 来实现啊,在更新的时候 判断一下就行了
被你搞的越来越复杂
快溜 2011-01-18
  • 打赏
  • 举报
回复
看的有点糊涂了
这个思路行不?
update 考生表 set 成绩=成绩+(case when 条件1 and 条件2 then 加分分数2......)
王向飞 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bbhere 的回复:]

谢楼上

比如加分1与加分3互斥,最大加分不超过10分
[/Quote]你用程序判断啊?前台什么都不干?
bbhere 2011-01-18
  • 打赏
  • 举报
回复
谢楼上

比如加分1与加分3互斥,最大加分不超过10分
王向飞 2011-01-18
  • 打赏
  • 举报
回复
给出测试数据和你希望得到的结果?

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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