请问如何在SQL语句的查询结果中,再次进行查询
请问如何在SQL语句的查询结果中,再次进行查询,
(我的意思是从ABC表中查出一个日期范围如“2003-1-1至2003-1-20”后,在从此结果中查出符合其它条件的记录)
我的查询语句如下:
dim bb as QueryDef
bb = "select * from abc where 日期 between # " & Text4.Text & " # and # " & Text5.Text & " # "
Data1.RecordSource= "select * from bb where 摘要 = '市内1' or 摘要 = '市内2' or 摘要 = '市外1' or 摘要 = '市外2' "
可能写的有错误,望各位给予指教。
问题点数:30、回复次数:16Top
1 楼chenyu5188(来自东方的狼)回复于 2003-02-03 23:07:03 得分 0
可以将第一次查询的结果放到一个临时表中,然后执行第二次查询时可以从这个临时表中进行哈
希望我的方法对你有所帮助 ̄!!Top
2 楼ok1(wei)回复于 2003-02-03 23:20:23 得分 0
试一下用一个嵌套的SQL句吧,如果你使用的是SQL SERVER的话,可以建立一个储过程,代码如下:
select * from 表名 where 日期 between (2003-1-1,2003-1-20) and 你的字段(select * from 表名 where 你要搜索的字段=XXX值)
你试一下吧
Top
3 楼zcg1115()回复于 2003-02-04 18:44:17 得分 0
chenyu5188(蓝色情调)
我也是想象你说的将第一次查询的结果放到一个临时表中但如何操作烦劳将操作代码提供 谢谢Top
4 楼Cybery(Cybery)回复于 2003-02-04 18:51:38 得分 0
可手动在数据库中建立一个表作为临时表!
Top
5 楼FreshAir(FreshAir)回复于 2003-02-05 09:57:43 得分 0
可以使用Data1.RecordSet的下述方法
FindFirst 条件 从第一条记录开始向后查找
FindLast 条件 从最后一条记录开始向前查找
FindPrevious 条件 从当前记录开始向前查找
FindNext 条件 从当前记录开始向后查找Top
6 楼heyday(水中天)回复于 2003-02-07 13:04:56 得分 0
1,可以使用子查询
2, 可以考虑用视图
3, 用临时表Top
7 楼zjsm96441125(流星物语)回复于 2003-02-07 13:52:45 得分 0
db.Execute "select aa,bb into Tabeltemp From Table"
rs.open "select * from tabeltemp where aa='%55' ",db
Top
8 楼qbilbo(风之兄)回复于 2003-02-07 14:35:47 得分 30
Dim db As Database
Dim bb As QueryDef
Set db = DBEngine.OpenDatabase("yourdbfile")
Set bb = db.CreateQueryDef("bb", "select * from abc where 日期 between # " & Text4.Text & " # and # " & Text5.Text & " # ")
Data1.RecordSource = "select * from bb where 摘要 = '市内1' or 摘要 = '市内2' or 摘要 = '市外1' or 摘要 = '市外2' "
...
...
db.QueryDefs.Delete "bb"
随手写的不一定对。
思路是先创建一个查询,再执行。
执行完后别忘记删除查询,不然下次再用就会出错了。Top
9 楼showgood(傻傻的)回复于 2003-02-07 14:42:51 得分 0
bb = "(select * from abc where 日期 between # " & Text4.Text & " # and # " & Text5.Text & " # ) v1 "
Data1.RecordSource= "select * from " & bb & " where 摘要 = '市内1' or 摘要 = '市内2' or 摘要 = '市外1' or 摘要 = '市外2' "
Top
10 楼yefm(百聊)回复于 2003-02-07 18:20:44 得分 0
用filterTop
11 楼dlczg(火麒麟)回复于 2003-02-08 10:57:34 得分 0
"select * into ##temp from abc where 日期 between # " & Text4.Text & " # and # " & Text5.Text & " # "
"select * from ##temp where 摘要 = '市内1' or 摘要 = '市内2' or 摘要 = '市外1' or 摘要 = '市外2' "
"drop table ##temp "
记着用完了别忘了删除临时表。
Top
12 楼ziyue(紫月)回复于 2003-02-08 11:02:16 得分 0
先保存一下记录。Top
13 楼chinareny(编程浪子)回复于 2003-02-08 13:53:42 得分 0
markTop
14 楼hjy2000(hjy2000)回复于 2003-02-08 14:21:16 得分 0
filter属性Top
15 楼lusygrant()回复于 2003-02-08 14:22:56 得分 0
使用Recordset的Filter属性和Data1.RecordSet属性
对一个已有的Recordset记录集对象(假设为rst)用Filter属性可以在原来的查询结果中进行再次查询
rst.filter="select * from bb where 摘要 = '市内1' "
Set Data1.Recordset=rst
执行完filter语句后,rst中是满足再次查询条件的所有记录,如果需要使用原来的记录集,就需要在再次查询前保存原记录
dim rstNew as Recordset
set rstNew=rst
rstNew.Filter
Set Data1.Recordset=rstNew
Top
16 楼zcg1115()回复于 2003-02-09 12:40:32 得分 0
qbilbo(风之兄) 以解决了我的问题,谢谢各位的答复Top




