如何从一个查询结果中进一步查询数据(续)??

amfer 2004-06-24 03:16:21
原貼:http://community.csdn.net/Expert/topic/3094/3094202.xml?temp=1.336306E-02

1. 我第一步要花很长一段时间查出一部分数据,之后的n个操作都只需要用到第一步中的结果(过滤是没有用的,因为需要和其他表配合)。
2. 如何直接或间接操作两个服务器上的数据库。


舉例説明:

视图是固定的,我的查询却可以很灵活,比如说有一个存放收货批号历史的表T,一个从n年前到现在的收货明细表D

1. 要从收货明细表D中查出新收的货品
2. 从新收货品中找出以前没有过的批号(即对比表T)
3. 从新收货品中找出以前收过的批号
4. 或许还有某一天中新收的批号

收货明细的表也许很大比如300万条,我要找出新收货的数据可能只有1万条,而新收货中以前没有过的只有100条,我在查询第一步时花的时间最多,如果第一步查询完成后,2,3,4步操作就只需要从1万条里面筛选,如果2,3,4步都分别用一条sql来查询那么就多花了很多第一步里的时间。

不知大家明白我的意思没有,还有一种情况,就是表T和表D属于两个不同的数据库连接,也就是说如果数据库为Foxpro DBF,那么表T和表D分别处于不同的目录,如果是SQL Server,那么表T和表D处于两台SQL服务器中,也就是一条SQL语句没有办法同时查询两个表的时候。
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
amfer 2004-06-29
  • 打赏
  • 举报
回复
創建視圖並不能提高效率,這樣做還多花了創建視圖的時間,還不如用臨時表,如果可以的話
guanshangming 2004-06-29
  • 打赏
  • 举报
回复
到目前为止我也只发现用临时表的方法。
amfer 2004-06-28
  • 打赏
  • 举报
回复
guanshangming()的問題,也是我的問題

季老大:
受教了。
Query2如何构造SQL语句呢?
Select * from ??? 这里应该填什么呢?
夏夜倒骑驴 2004-06-28
  • 打赏
  • 举报
回复
提供一个想法,我没试过:
能不能把第一个查询语句改为一个创建视图语句,以后的查询就可以在这个视图基础上查询了,查询视图的速度可能会慢一些,其后的查询完毕后删除视图
amfer 2004-06-28
  • 打赏
  • 举报
回复
To 季头:

似乎有点明白了,不过我并不只是想要Query1中的一些数据,贴子中的例子也只是个简单的,
如果能在Query1中使用sql语句,那么就可以实现更复杂的查询,
举例来说:Query1中查询出一客户ID,在以后的步骤中我想把它和客户表连接转化成实际的客户名,如果Query1是一个真实的表就简单了,只需用一条连接两个表的sql语句。如果用Filter就不太方便,我只能遍历所有纪录,效率岂不更低?
futulove 2004-06-28
  • 打赏
  • 举报
回复
用过滤就可以我以前用过,可是也有一个小问题比如说Query1新增了一个字段(LookUp)另一个表的,比如说是Bool型的,第一次过滤为false就不过滤掉,然后在程序接着运行的时候我把false给改成true了,就是说第二次应该过滤掉了,可是他就是过滤不掉,非得把程序关了在运行就过滤掉了。要是不LookUp另一个表的字段,用自己表的字段就好使不知道为什么。不知道我说的清不清楚,在这里也借问一个季哥这是怎么回事?
jishiping 2004-06-28
  • 打赏
  • 举报
回复
以前没有这样做过,不过现在看来,我大概说错了。上面说的方法,好像是行不通的。你这
个问题,可以这样解决。对于步骤1,首先下条件查询,当需要进行步骤2、3、4时,可以设
定Query控件的属性Filter为true,同时在事件OnFilterRecord中写代码再过滤。针对不同的
步骤,你可以在这个事件中写不同的代码进行过滤。这个过滤动作,仅仅是在第一次查询的
基础上过滤。
jishiping 2004-06-25
  • 打赏
  • 举报
回复
使用一个TDataSource控件,这个TDataSource的属性DataSet指向第一次查询的Query或者Table控件。对于第二个查询,第二个Query(或者Table)控件的属性DataSource,指向那
个TDataSource控件,这样第二个查询,就直接从第一次查询的结果中再次查询了。比如:
第一次查询,使用Query1控件来查询。DataSource1的属性DataSet指向Query1,也就是说
Query1查询的结果存放到DataSiource1中。第二次查询,使用Query2控件,Query2的属性
DataSource,指向DataSource1,这样第二次查询,就从第一次查询的结果中再次查询了。
MEFULEU 2004-06-24
  • 打赏
  • 举报
回复
先把已经查询到的结果保存到临时文件啊!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧