主题:简单的数据更新问题,却总是做不好 :(
coffeenight
[专家分:230] 发布于 2009-02-13 09:56:00
是这样的:
A表是全表,字段有
编号 姓名 课程1代码 课程2代码 课程3代码 课程4代码 课1 课2 课3 课4
1039901 张三 101 202 646 839
1039902 李四 101 201 301 无
.....
....
(近20000条纪录)
B表是缺考表,字段是 编号代码 (编号代码的内容是:编号+所缺考的课程代码)
1039901202
1039901646
1039901839
1039902301
.....
.....
(近7000条纪录)
现在我要把缺考 反映到相应的 考生的课程下面
该怎么做会比较好呢?
谢谢大家
回复列表 (共7个回复)
沙发
xm7050432 [专家分:180] 发布于 2009-02-13 11:29:00
我的思路是把编号代码,例如1039901202,左边7位提取出来为BH,右边3位提取出来KC。
再到A表根据BH定位编号,再根据KC定位课程,最后做个标记就可以了。
板凳
alpen [专家分:1140] 发布于 2009-02-13 15:47:00
这个很有意思,其实就是做点判断和循环语句,计算机做几万条是很快的,所以考虑一下如何判断,然后替换,再做循环啦
3 楼
狐说八道 [专家分:860] 发布于 2009-02-13 16:21:00
可以用select _ sql
4 楼
oufeiwen [专家分:910] 发布于 2009-02-16 21:50:00
clos data
use 表b alia 表b in 0
&&如果该字段已做索引,则以下两行不要,其它按实际情况调整
sele 表b
inde on 编号代码 tag 编号代码
use 表a alia 表a in 0
sele 表a
set rela to allt(编号)+allt(课程1代码) into 表b
wait '运算课1是否缺考......' window nowa
repl 课1 with '缺考' for !empt(表b.编号代码)
set rela to allt(编号)+allt(课程2代码) into 表b
wait '运算课2是否缺考......' window nowa
repl 课2 with '缺考' for !empt(表b.编号代码)
set rela to allt(编号)+allt(课程3代码) into 表b
wait '运算课3是否缺考......' window nowa
repl 课3 with '缺考' for !empt(表b.编号代码)
set rela to allt(编号)+allt(课程4代码) into 表b
wait '运算课4是否缺考......' window nowa
repl 课4 with '缺考' for !empt(表b.编号代码)
brow fiel 编号,姓名,课程1代码,课程2代码,课程3代码,课程4代码,课1,课2,课3,课4
欢迎交流!
5 楼
coffeenight [专家分:230] 发布于 2009-02-16 23:17:00
感谢楼上的朋友,回头学习后再来贴心得
目前我是用
updata a set 课1=Q where ksbh+课程1代码 in (sele 编号代码 from b )
......
....
updata a set 课4=Q where ksbh+课程4代码 in (sele 编号代码 from b )
只是运行的速度超级慢啊。。。。
我的算法。。。太笨了。。。
6 楼
alpen [专家分:1140] 发布于 2009-02-17 14:41:00
*我再来试试吧,把B表的编号代码先取出来,生成另时表B1
*编号代码中的课程代码 substr(编号代码,??,??) ,
select substr(编号代码,??,??) 课程代码 ,* into curs B1 from b order by 编号代码
*把A表的ksbh代码取出来,生成另时表A1
select ksbh into curs A1 from A group ksbh order by ksbh
select A1
do where not eof()
*编号代码中的考生代码 substr(编号代码,1,?) ,
*目的是改变where确...的条件,提升处理速度
select * into curs B2 from B1 where substr(编号代码,1,?)=A1.ksbh
*updata a set iif(课程1代码=课1=Q where 课程1代码 in (sele 课程代码 from B2
select A1
skip
enddo
retu
*我没有试运行,希望能解决问题.看样子你的原表A的结构有点欠缺,所以后面就难处理了.
7 楼
lbscyb [专家分:4780] 发布于 2009-02-19 00:44:00
数据库设计太差!
我来回复