Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套循环的动态TSQL查询_Sql_Sql Server_Vbscript_Adodb - Fatal编程技术网

嵌套循环的动态TSQL查询

嵌套循环的动态TSQL查询,sql,sql-server,vbscript,adodb,Sql,Sql Server,Vbscript,Adodb,我已经建立了一个基于内部网的问答系统,使用SQL server作为后端。测验分数存储在单独的表格中,每个测验一个。根据员工的职位,他们将只能参加部分或全部测验。 我试图确定运行查询的最佳方式,该查询将汇总每个人完成的测验数量,并将其与分配给他们的预定义测验数量进行比较。一旦两个数字匹配,它们就被认为是完整的,我可以将最终结果导出到另一个DB 我试着使用VBS循环遍历测验表并检查每个人的分数,但我似乎无法让它正常工作,因为它依赖于循环遍历每个员工记录,然后必须再次循环遍历分配给每个员工的所有表名。

我已经建立了一个基于内部网的问答系统,使用SQL server作为后端。测验分数存储在单独的表格中,每个测验一个。根据员工的职位,他们将只能参加部分或全部测验。 我试图确定运行查询的最佳方式,该查询将汇总每个人完成的测验数量,并将其与分配给他们的预定义测验数量进行比较。一旦两个数字匹配,它们就被认为是完整的,我可以将最终结果导出到另一个DB

我试着使用VBS循环遍历测验表并检查每个人的分数,但我似乎无法让它正常工作,因为它依赖于循环遍历每个员工记录,然后必须再次循环遍历分配给每个员工的所有表名。我最终循环初始查询而不是二次查询以获取计数:

Set rs=CreateObjectADODB.Recordset rs.CursorLocation=3 rs.打开从有效应用程序中选择v.emp_num,v.position,p.group_id作为v,位置作为p,其中v.complete=0,v.notified=0,v.position=p.position,conn RSCount=rs.RecordCount i=0 直到i=RSCount为止 strempNum=rsemp_num strPosition=rsposition strGroupID=rsgroup\u id Set rs2=CreateObjectADODB.Recordset rs2.CursorLocation=3 rs2.打开并从quizfilter中选择测验名称、tblname、测验代码,其中组id位于1、&strGroupID&,conn recCount=rs2.RecordCount x=0 直到x=重新计数 strQuizName=rs2quick\u名称 strTable=rs2tblname strCode=rs2u码 Set rez=CreateObjectADODB.Recordset rez.CursorLocation=3 j=0 直到j=重新计数 重新调整打开选择计数*从&strTable&WHERE 作为SumCount,通过\失败=1,员工\人数=7275 j=j+1 环 Set rez2=CreateObjectADODB.Recordset rez2.CursorLocation=3 rez2.打开从QuizGroups中选择测验计数,其中group_id=&strGroupID&,conn 如果不是rez2.eof,则 strQuizCount=rez2quick\u计数 如果结束 rs2.MoveNext x=x+1 环 如果不是用户,则 对于UBounddataArray的记录=0,2 STRTECOUNT=dataArrayuser_分数,记录 下一个 如果strtheCount=strQuizCount,则 回音计数为&strQuizCount& 如果结束 如果结束 rs2.close 设置rs2=无 下一个 i=i+1 环 如果有人能给我指出正确的方向,也许有一种方法可以通过SQL存储过程中的动态查询来实现这一点


非常感谢

谢谢你的主意, 我通过将所有测验分数更新到一个公共表来实现这一点,现在我可以参考该表来确定每个用户是否完成了所需数量的测验


我感谢你的帮助

数据库中存在一个基本的设计缺陷,必须首先修复。您有动态表名。不要那样做。不是每个测验都有一个单独的表格,而是创建一个名为quizzes或类似的表格,并将quizz\u code、pass\u fail、employee\u num列放在其中。在你继续做这项工作之前,先做些改变。现在也是学习如何使用ANSI-92样式的连接的时候了,它们已经存在了25年多了。