设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: brucewong
打印 上一主题 下一主题

[模块/函数] 对多组数据的快速对比 - 新方法

[复制链接]
11#
发表于 2008-1-13 13:36:42 | 只看该作者
更正一下:需要用到ABS函数
SELECT [aFT_PROCESS_1].[编号] & "<---->" & [aFT_PROCESS].[编号] AS [No], AFT_PROCESS_1.数据1 AS [数据1-1], AFT_PROCESS_1.数据2 AS [数据1-2], AFT_PROCESS_1.数据3 AS [数据1-3], AFT_PROCESS.数据1 AS [数据2-1], AFT_PROCESS.数据2 AS [数据2-2], AFT_PROCESS.数据3 AS [数据2-3]
FROM AFT_PROCESS, AFT_PROCESS AS AFT_PROCESS_1
WHERE (((Abs([aft_process].[数据1]-[aft_process_1].[数据1]))<0.03) AND ((Abs([aft_process].[数据2]-[aft_process_1].[数据2]))<0.03) AND ((Abs([aft_process].[数据3]-[aft_process_1].[数据3]))<20) AND (([aft_process].[编号]-[aft_process_1].[编号])<>0));
12#
发表于 2008-1-13 13:40:57 | 只看该作者
VD,改过后的查询结果还是和楼主自己原来的不一样哦
13#
发表于 2008-1-13 13:47:39 | 只看该作者
其实我不太明白楼主想干什么,只是提供一个思路,相信楼主自己可以做的更加的完善
14#
 楼主| 发表于 2008-1-14 11:37:47 | 只看该作者
原帖由 Victor_Duane 于 2008-1-13 13:36 发表
更正一下:需要用到ABS函数
SELECT [aFT_PROCESS_1].[编号] & "" & [aFT_PROCESS].[编号] AS [No], AFT_PROCESS_1.数据1 AS [数据1-1], AFT_PROCESS_1.数据2 AS [数据1-2], AFT_PROCESS_1.数据3 AS [数据1-3], AFT_P ...


感谢VICTOR 的回复
目前我就是用查询来实现的!

但是我的想法是查询的效率还是不够高呀!

我的思路是,拿数据1的对比来说(假设对比相等,而不是对比差值)!比如说对比第一条纪录时将数据1按照升序排列
用第一条纪录对比所有纪录中间的一条如果比第一条大那么抛弃后1/2所有纪录,然后将第一条与前1/2数据的1/2位置的纪录数据对比,如果小则再抛弃其前1/2
依次类推
100000条数据 最多对比16次即刻得到结果,如果用遍历数据的话那么需要进行100000^2-100000次至少!!

100000/2 =50000
50000/2=25000
25000/2=12500
12500/2=6250
6250/2=3125
3125/2=约1563
718
390
195
97
48
24
12
6
3
1
15#
发表于 2008-1-17 04:44:41 | 只看该作者
好复杂,学习一下
16#
发表于 2008-1-17 04:44:59 | 只看该作者
学习学习, :)
17#
 楼主| 发表于 2008-1-21 15:53:38 | 只看该作者

已经搞定!

因为数据中有可能有完全重复的数字,
所以用14楼的思路会出现漏掉的情况
解决的思路是将数据排序,然后读入数组(当然也可以不用,我是用VB先排序EXCEL数据然后数组直接读入EXCEL表格的数据),然后分区域对比,满足需求
10000条数据完成对比用时间9秒左右
等整理好了放上来大家参考!
18#
 楼主| 发表于 2008-1-21 16:03:42 | 只看该作者
原帖由 rjacky 于 2008-1-13 12:27 发表
能用查询就应尽量用查询的方法

在我电脑上,只用1个查询生成和你使用记录集一样的结果,耗时仅是后者的8分1

27849

多谢哥哥的帮助哇!
不过我现在实现的效率是之前的基本上是30倍以上!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-25 12:30 , Processed in 0.095784 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表