请教,怎样对数据查询?(100分)

  • 主题发起人 主题发起人 optn3
  • 开始时间 开始时间
O

optn3

Unregistered / Unconfirmed
GUEST, unregistred user!
table1:<br>码1 码2 码3 码4 码5 码6 标记<br>26 &nbsp;28 &nbsp;11 &nbsp;13 &nbsp;10 &nbsp;12<br>09 &nbsp;04 &nbsp;26 &nbsp;21 &nbsp;19 &nbsp;20<br>23 &nbsp;07 &nbsp;28 &nbsp;10 &nbsp;01 &nbsp;32<br>13 &nbsp;04 &nbsp;07 &nbsp;25 &nbsp;06 &nbsp;10<br>04 &nbsp;30 &nbsp;17 &nbsp;15 &nbsp;31 &nbsp;06<br>01 &nbsp;10 &nbsp;27 &nbsp;26 &nbsp;21 &nbsp;03<br>23 &nbsp;19 &nbsp;09 &nbsp;26 &nbsp;01 &nbsp;21<br>09 &nbsp;08 &nbsp;17 &nbsp;23 &nbsp;14 &nbsp;05<br>30 &nbsp;18 &nbsp;09 &nbsp;22 &nbsp;05 &nbsp;20<br>01 &nbsp;17 &nbsp;24 &nbsp;08 &nbsp;02 &nbsp;13<br>………………<br>有几十万条记录<br><br><br>table2:<br>限定条件 &nbsp; &nbsp;号码列表<br>1-4 &nbsp; &nbsp; &nbsp; &nbsp; 12 15 16 20 21 26<br>……<br><br>怎样利用table2的条件对表1进行查询,如果不满足条件的在标记上记录‘*’,<br>如果表2第一行,条件1-4 &nbsp; &nbsp; &nbsp; &nbsp; 号码12 15 16 20 21 26 ,与表1每一行的码1-码5的相同数交集满足1-4(1个-4个)<br><br><br>26 &nbsp;28 &nbsp;11 &nbsp;13 &nbsp;10 &nbsp;12 // 有2个相同26 12,满足条件<br>09 &nbsp;04 &nbsp;26 &nbsp;21 &nbsp;19 &nbsp;20 // 有1个相同26,满足条件 <br>23 &nbsp;07 &nbsp;28 &nbsp;10 &nbsp;01 &nbsp;32 //有0个相同。不满足条件。应在标记上记录‘*’<br>13 &nbsp;04 &nbsp;07 &nbsp;25 &nbsp;06 &nbsp;10 &nbsp;‘*’<br>04 &nbsp;30 &nbsp;17 &nbsp;15 &nbsp;31 &nbsp;06 &nbsp;//有1个相同15<br>01 &nbsp;10 &nbsp;27 &nbsp;26 &nbsp;21 &nbsp;03<br>23 &nbsp;19 &nbsp;09 &nbsp;26 &nbsp;01 &nbsp;21<br>09 &nbsp;08 &nbsp;17 &nbsp;23 &nbsp;14 &nbsp;05<br>30 &nbsp;18 &nbsp;09 &nbsp;22 &nbsp;05 &nbsp;20<br>01 &nbsp;17 &nbsp;24 &nbsp;08 &nbsp;02 &nbsp;13<br><br><br>我听说如果建索引的话查询快的多,不知怎样建立.只是利用D7工具(database desktop)在'C:/'下建了2个paradox7 的*.DB分别为表1,表2.<br>怎样以最快的速度对表1查询?贴全代码看看。先谢谢了。
 
可以考虑增加一个用于统计的标记位MatchCount,然后利用如下的SQL语句进行统计:<br>&nbsp; Update 表1 Set MatchCount=0<br>&nbsp; Update 表1 Set MatchCount=MatchCount+1 Where 码1 in [12,15,16,20,21,26]<br>&nbsp; Update 表1 Set MatchCount=MatchCount+1 Where 码2 in [12,15,16,20,21,26]<br>&nbsp; ...<br>&nbsp; Update 表1 Set MatchCount=MatchCount+1 Where 码6 in [12,15,16,20,21,26]<br>&nbsp; 统计完毕再执行 Update 表1 Set 标记='*' Where MatchCount BETWEEN 1 and 4 即可。<br><br>&nbsp; 为了提高效率,需要对码1-6分别建立索引,然后,利用表2的内容在Delphi中拼接出上述<br>语句中in之后的部分以及BETWEEN之后的部分,循环执行,直到表2遍历完毕。
 
to creation-zy,<br>怎样对码1-6分别建立索引?<br>我在table1属性FieldDefs中添加6个Name名为:table1index1~6<br>运行后,出现"table1:no index for fields '码1'"的错误是怎么回事,
 
搞了半天,再用database desktop,在KEY中设置码1~码6,这样可以建立索引.<br>creation-zy,你可以把全部代码写出来吗?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部