数据库中某字段中,第i题出现的次数,该如何处理
数据库中某字段中,第i题出现的次数
数据库:test
包含的数据表:test
name score timu
01 20 1 2 3 4 5 6 7 8 9 10 11 12
02 10 1 3 5 6 8 10 12
03 30 2 4 7 9 10
04 40 3 5
想通过VBA判断出,此表中timu字段中包含从第1题到第12题 各题出现的次数。
即:在timu字段中,第1题出现:2次
第2题出现:2次
第3题出现:3次……
该如何设计代码?
我用instr()函数,结果把 11 和10和12 中的1也统计出来了……
------解决方案--------------------
首先,这个数据表结构有问题。关系型数据库应该是完全线性的。
具体到你这个表,应该如下使用:
name score timu
01 20 1
01 20 2
01 20 3
......
04 40 3
04 40 5
或者有两张表,第一张包含 name, score,每个 name 占用一条记录;第二张表包含 name, timu,每一个题目占用一条记录。
这样用 SQL 查询就很方便:
Select Sum(timu) As cishu From test Group By timu
------解决方案--------------------
强烈建议lz先按照1L把你的数据结构规范好,再实现后面的需求。
如同看着地基没打好,非要强行盖楼,后面会遇到更多麻烦,除非lz说,我实现了这个功能,甩手这个程序就这样了。
------解决方案--------------------
如楼上所说, 楼主你这个数据库建表有问题.
数据要有唯一性, 除非你对该数据永远没有唯一性需求才可以堆放在一起. 但是将来万一有要求了,就拆不开了.
象你这个需求至少应该建两个表, 换成我自己做的话就是3个表
表1用于存放用户信息字段:
姓名 , 学号, 性别 , 年龄 ... , ....
表2用于存放课题字段:
题目编号 , 题目分值 ......
表3用于存放用户和题目对应关系, 可以是固定表, 如果只是临时用, 也可以在查询中创建临时表:
学号, 题目编号, ...
或者
姓名, 题目编号, ...
因为姓名可能重复,所以一般用学号, 也可以姓名+学号
学号, 姓名, 题目编号
表1和表2作为基本表来维护, 表3作为查询和报表结果, 从基本标中取数据.
数据库:test
包含的数据表:test
name score timu
01 20 1 2 3 4 5 6 7 8 9 10 11 12
02 10 1 3 5 6 8 10 12
03 30 2 4 7 9 10
04 40 3 5
想通过VBA判断出,此表中timu字段中包含从第1题到第12题 各题出现的次数。
即:在timu字段中,第1题出现:2次
第2题出现:2次
第3题出现:3次……
该如何设计代码?
我用instr()函数,结果把 11 和10和12 中的1也统计出来了……
------解决方案--------------------
首先,这个数据表结构有问题。关系型数据库应该是完全线性的。
具体到你这个表,应该如下使用:
name score timu
01 20 1
01 20 2
01 20 3
......
04 40 3
04 40 5
或者有两张表,第一张包含 name, score,每个 name 占用一条记录;第二张表包含 name, timu,每一个题目占用一条记录。
这样用 SQL 查询就很方便:
Select Sum(timu) As cishu From test Group By timu
------解决方案--------------------
强烈建议lz先按照1L把你的数据结构规范好,再实现后面的需求。
如同看着地基没打好,非要强行盖楼,后面会遇到更多麻烦,除非lz说,我实现了这个功能,甩手这个程序就这样了。
------解决方案--------------------
如楼上所说, 楼主你这个数据库建表有问题.
数据要有唯一性, 除非你对该数据永远没有唯一性需求才可以堆放在一起. 但是将来万一有要求了,就拆不开了.
象你这个需求至少应该建两个表, 换成我自己做的话就是3个表
表1用于存放用户信息字段:
姓名 , 学号, 性别 , 年龄 ... , ....
表2用于存放课题字段:
题目编号 , 题目分值 ......
表3用于存放用户和题目对应关系, 可以是固定表, 如果只是临时用, 也可以在查询中创建临时表:
学号, 题目编号, ...
或者
姓名, 题目编号, ...
因为姓名可能重复,所以一般用学号, 也可以姓名+学号
学号, 姓名, 题目编号
表1和表2作为基本表来维护, 表3作为查询和报表结果, 从基本标中取数据.