asp 怎么从循环外逐个取的循环内的每一个值

川娃子 2009-08-05 11:38:48
数据表
s1,s2
表结构
s1——id,name
s2——id,sid,name
表关系
s1.id=s2.sid
实现什么功能(注:在这里不能使用嵌套循环,否则就没有那种效果了)

dim id
set rs_s1 = server.createobject("ADODB.Recordset")
sql = "select * from s1"
rs_s1.open sql,conn,1,1
if not rs_s1.eof then
do while not rs_s1.eof
id=rs_s1("id")
rs_s1.movenext
loop
end if
rs_s1.close
set rs_s1 = nothing

set rs_s2 = server.createobject("ADODB.Recordset")
sql = "select * from s2 where sid="id
rs_s2.open sql,conn,1,1
if not rs_s2.eof then
do while not rs_s2.eof
rs_s2("name")
rs_s2.movenext
loop
end if
rs_s2.close
set rs_s2 = nothing

这样写是错误的在第一个循环中id=循环完了的最后的rs_s1("id")对第二个循环就没意义了
我想的是通过什么方法可以逐个获取第一个循环中的每一个值再传给第二个循环中
不知道我这样说的清楚不,那就麻烦各位帮帮忙啊!
...全文
130 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
anjing5566 2009-08-06
联合查询?
如11楼的那个?
回复
ly8199 2009-08-06
dim id, ids
ids = ""
set rs_s1 = server.createobject("ADODB.Recordset")
sql = "select * from s1"
rs_s1.open sql,conn,1,1
if not rs_s1.eof then
do while not rs_s1.eof
ids = ids & rs_s1("id")
rs_s1.movenext
if not rs_s1.eof then ids = ids & ","
loop
end if
rs_s1.close
set rs_s1 = nothing

ids = split(ids,",")

For i = LBound(ids) To UBound(ids)
set rs_s2 = server.createobject("ADODB.Recordset")
sql = "select * from s2 where sid="&ids(i)
rs_s2.open sql,conn,1,1
if not rs_s2.eof then
do while not rs_s2.eof
rs_s2("name")
rs_s2.movenext
loop
end if
rs_s2.close
set rs_s2 = nothing
Next


回复
川娃子 2009-08-05
问题还没有解决 下面补充说一下问题
hookee 把第一个循环的每个值取出来了
但第二个循环还是没有意义 即第二个循环只执行了一次
我想要的效果是当第一个循环执行一次时第二个循环也要执行一次
就像嵌套循环一样,但我又不能做成嵌套循环 要的是效果一样
回复
川娃子 2009-08-05
多谢了
但是你代码不完善
这里要改改ids = rs_s1("id") & ","
ids = ids & rs_s1("id") & ","
回复
hookee 2009-08-05

dim id, ids
ids = ""
set rs_s1 = server.createobject("ADODB.Recordset")
sql = "select * from s1"
rs_s1.open sql,conn,1,1
if not rs_s1.eof then
do while not rs_s1.eof
ids = rs_s1("id") & ","
rs_s1.movenext
loop
end if
rs_s1.close
set rs_s1 = nothing

If ids <> "" Then ids = Left(ids, Len(ids)-1)

set rs_s2 = server.createobject("ADODB.Recordset")
sql = "select * from s2 where sid IN (" & ids & ")"
rs_s2.open sql,conn,1,1
if not rs_s2.eof then
do while not rs_s2.eof
rs_s2("name")
rs_s2.movenext
loop
end if
rs_s2.close
set rs_s2 = nothing
回复
Msxindl_Com 2009-08-05
试试这个:


sql="select * from s1 inner join s2 on s1.id = s2.sid"
回复
gxq323 2009-08-05
hookee老大的就对用in,估计是字符串没仔细拼,你仔细拼下拼成 “1,2,3 ”这种格式的
回复
川娃子 2009-08-05
我想做两个循环使其效果和嵌套循环一样
s1表数据是
1 a
2 b
3 c
4 d
5 e
s2表数据是
001 1 a1
002 2 b2
003 3 c3
004 4 d4
005 5 e5

运行效果
a a1
b b2
c c3
d d4
e e5

在这里不用嵌套循环 怎么实现
帮帮忙啊 我都等了一天的答案了 现在还没有结果
回复
王者coco 2009-08-05
嵌套循环有点麻烦
回复
ly8199 2009-08-05
不知道你是要实现什么样的功能。。。。
怎么会有这种想法。。。。。

嵌套循环 不要 ,那写成 函数,调用呗。。。
回复
ilxl520 2009-08-05

set rs_s1 = server.createobject("ADODB.Recordset")
sql = "select * from s1"
rs_s1.open sql,conn,1,1
do while not rs_s1.eof
set rs_s2 = server.createobject("ADODB.Recordset")
sql = "select * from s2 where sid="&rs_s1("id")
rs_s2.open sql,conn,1,1
do while not rs_s2.eof
rs_s2("name")
rs_s2.movenext
loop
rs_s1.movenext
loop


do while就是由判断功能的,不需要加另外加if判断
回复
heatonc 2009-08-05
LZ想 嵌套循环?
回复
wtg321 2009-08-05
没看明白楼主要干什么。不过可以参考一下INNOR JOIN 和LEFT JOIN 的用法。
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告