CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

一个数据库操作的问题,大家帮忙看看!

楼主javacb(java)2005-04-04 15:47:54 在 .NET技术 / C# 提问

有两个表,一个是题库表(存放)试题,一个是出题条件表(存放出题的条件)  
   
  题库表:  
  题号       题型     章节     难度  
  01           选择       1           1  
   
  出题条件表:  
  题型,章节,难度为1题数,难度为2题数,难度为3题数,是否排除  
  选择     *           5                               5                         5             否  
  选择     1           2                                 3                   3                 否  
  选择     2           0                                   0                   0               是  
   
  (说明,章节如果为*,表示   此题型在试卷中的题数,章节为具体植时,表示在此章节要出的题数)  
  如果,是否排除字段   为是,表示,在此章节不出题  
   
  然后就这样,根据出题表中的若干条件,从题库将试题随机选出来,将题号存放到临时表中.  
   
  我太笨,希望高手   能帮帮吗?要实现,该怎么做,谢了  
  问题点数:50、回复次数:5Top

1 楼minajo21(大眼睛)回复于 2005-04-04 16:02:36 得分 0

实在看不懂你的描述...Top

2 楼xspf()回复于 2005-04-08 14:28:24 得分 50

我觉得除了动态创建SQL语句外,没有什么别的方法。  
   
  我照我的思路写了一个,你看看能不能用。  
   
   
  DECLARE   @Sql   varchar(6400)  
   
  SELECT   NULL   AS   [题号]   INTO   #tempTable  
   
  DECLARE   cur_Sql   CURSOR   FOR  
  SELECT    
  'INSERT   INTO   #tempTable   +   '   +    
  'SELECT   TOP   '   +   难度为1题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=1   '   +  
  'ORDER   BY   NEWID()   '   +  
  'INSERT   INTO   #tempTable   '   +  
  'SELECT   TOP   '   +   难度为2题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=2   '   +  
  'ORDER   BY   NEWID()   '   +  
  'INSERT   INTO   #tempTable   '   +    
  'SELECT   TOP   '   +   难度为3题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=3   '   +  
  'ORDER   BY   NEWID()   '    
  FROM   [出题条件表]  
  WHERE   章节<>'*'   AND   是否排除='否'  
   
  OPEN   cur_Sql  
  FETCH   NEXT   INTO   @Sql  
   
  WHILE(@@FETCH_STATUS=0)  
  BEGIN  
  EXECUTE(@Sql)  
   
  IF(@@ERROR<>0)  
  BEGIN  
  RAISERROR('出错!',16,1)  
  CLOSE   cur_Sql  
  DEALLOCATE   cur_Sql  
  RETURN  
  END  
  FETCH   INTO   @Sql  
  END  
   
  CLOSE   cur_Sql  
  DEALLOCATE   cur_Sql  
   
  SELECT   *   FROM   #tempTable  
   
   
  Top

3 楼xspf()回复于 2005-04-08 14:30:25 得分 0

贴错了  
   
  DECLARE   @Sql   varchar(6400)  
   
  SELECT   NULL   AS   [题号]   INTO   #tempTable  
   
  DECLARE   cur_Sql   CURSOR   FOR  
  SELECT    
  'INSERT   INTO   #tempTable   +   '   +    
  'SELECT   TOP   '   +   难度为1题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=1   '   +  
  'ORDER   BY   NEWID()   '   +  
  'INSERT   INTO   #tempTable   '   +  
  'SELECT   TOP   '   +   难度为2题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=2   '   +  
  'ORDER   BY   NEWID()   '   +  
  'INSERT   INTO   #tempTable   '   +    
  'SELECT   TOP   '   +   难度为3题数   +   '   [题号]   '   +  
  'FROM   [题库表]   '   +  
  'WHERE   题型='   +   题型   +   '   ,章节='   +   章节   +   ',难度=3   '   +  
  'ORDER   BY   NEWID()   '    
  FROM   [出题条件表]  
  WHERE   章节<>'*'   AND   是否排除='否'  
   
  OPEN   cur_Sql  
  FETCH   NEXT   FROM   cur_Sql   INTO   @Sql  
   
  WHILE(@@FETCH_STATUS=0)  
  BEGIN  
  EXECUTE(@Sql)  
   
  IF(@@ERROR<>0)  
  BEGIN  
  RAISERROR('出错!',16,1)  
  CLOSE   cur_Sql  
  DEALLOCATE   cur_Sql  
  RETURN  
  END  
  FETCH   FROM   cur_Sql   INTO   @Sql  
  END  
   
  CLOSE   cur_Sql  
  DEALLOCATE   cur_Sql  
   
  SELECT   *   FROM   #tempTable  
  Top

4 楼javacb(java)回复于 2005-04-09 22:29:45 得分 0

gzTop

5 楼javacb(java)回复于 2005-04-09 22:35:15 得分 0

gzTop

相关问题

  • 数据库操作
  • 数据库操作
  • 数据库操作
  • vc操作access数据库
  • 关于数据库操作
  • 数据库并发操作!
  • 简单数据库操作
  • 对数据库的操作
  • 数据库操作问题
  • 数据库操作问题?

关键词

  • 选择
  • top
  • sql
  • 题
  • 章节
  • 难度
  • temptable
  • 题库表
  • 出题
  • cur

得分解答快速导航

  • 帖主:javacb
  • xspf

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo