回 帖 发 新 帖 刷新版面

主题:简单的数据更新问题,却总是做不好 :(

是这样的:
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个回复)

沙发

我的思路是把编号代码,例如1039901202,左边7位提取出来为BH,右边3位提取出来KC。
再到A表根据BH定位编号,再根据KC定位课程,最后做个标记就可以了。

板凳


这个很有意思,其实就是做点判断和循环语句,计算机做几万条是很快的,所以考虑一下如何判断,然后替换,再做循环啦

3 楼

可以用select _ sql

4 楼


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 楼

感谢楼上的朋友,回头学习后再来贴心得

目前我是用
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 楼


*我再来试试吧,把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 楼

数据库设计太差!

我来回复

您尚未登录,请登录后再回复。点此登录或注册