经典的asp嵌套循环sql查询为什么会发生以下情况

时间:2013-01-08 02:49:36

标签: sql-server asp-classic ado

我现在感到困惑,如果有人能在这里帮助我,我会很高兴 我希望table1中的选定值与table2的值一起显示 但是,对于sql2,只有3条记录输出,而table2的输出给出了相同的3条记录。

如果我在sql analyzer中输入两个查询,它可以正常工作。目标是获得输出 sql1和sql1在3行中使用经典的asp,一个循环:

line1 rs("firstname") & space(1) & rs("boss")
line2 rs("firstname") & space(1) & rs("boss")
line3 rs("firstname") & space(1) & rs("boss")

程序:我首先必须在(sql2)之后进行查询(sql1),这取决于 sql1的结果

table1
id| |user| |firstname| |lastname| |acc|
1    user1   firstname1  lastname1 loc1
2    user2   firstname2  lastname2 loc2
3    user3   firstname3  lastname3 loc3
4    user4   firstname4  lastname4 loc1
5    user5   firstname5  lastname5 loc1

table2
id| |boss| |first_name| |username|
1     boss1  boss1email   user1 
2     boss2  boss2email   user2 
2     boss3  boss3email   user3
2     boss4  boss4email   user4
2     boss5  boss5email   user5

sql="select * from table1 where acc='loc1'"
Set rs=dbcon.Execute(sql)
do until rs.EOF
Response.Write rs("firstname")


Set rs1 = server.CreateObject ("adodb.recordset")
sql2="Select * from table2 where username='user1'"
set rs1=dbcon.execute(sql2)
do until rs1.eof

response.write rs1("boss")

rs1.movenext
loop

rs.movenext
loop<

3 个答案:

答案 0 :(得分:0)

为什么不:

SELECT t1.firstname, t2.boss FROM table1 t1
JOIN table2 t2 on t1.user = t2.username
WHERE t1.acc ="loc1"

答案 1 :(得分:0)

我已经使用了view函数并将其保存并使用asp来调用它。

答案 2 :(得分:0)

似乎在您的代码中需要替换此行

sql2="Select * from table2 where username='user1'"

'user1'用som引用rs(“username”)。使用您拥有的代码,您将从table2获取table1的每条记录的相同记录。