一个递归的问题,困扰好几天了
表结构如下
ID UPID name
1 0 a
2 0 b
5 1 c
7 1 d
9 2 e
10 2 f
12 5 g
检查UPID为0的时候,是否有两条记录,如果已经有两条了,则检查UPID为1的记录是否有两条,有的话在检查UPID为2的时候,然后在检查5,这样的递归,该怎么写?
问题点数:100、回复次数:6Top
1 楼yjbnew(伟大的光荣的正确的ASP千岁千岁千千岁)回复于 2005-09-01 14:12:35 得分 20
....
sql=select count(upid) form tb order by count(upid) group by upid
rs.open sql,conn,1,1
while not rs.eof
if rs(0)=2 then
exit while
else
rs.movenext
end if
wend
rs.close
conn.close
....Top
2 楼yjbnew(伟大的光荣的正确的ASP千岁千岁千千岁)回复于 2005-09-01 14:13:29 得分 20
sql=select count(upid) form tb order by count(upid) group by upid
rs.open sql,conn,1,1
while not rs.eof
if rs(0)<>2 then
exit while
else
rs.movenext
end if
wend
rs.close
conn.closeTop
3 楼caobin518(linlin)回复于 2005-09-01 14:21:51 得分 0
我面试时也有这种题!~~~~~~~~~Top
4 楼ljdzxx(圣域风)回复于 2005-09-01 14:39:55 得分 40
Function Test(Up_Id)
Dim objRS
Set objRS=Conn.Execute("Select Count(*) AS Num From Table Where UpID="& Up_Id)
If objRS("Num")<>2 Then
Response.Write "完了,找到一个不符合的!"
objRS.Close
Exit Function
End If
Set objRS=Conn.Execute("Select Top 1 * From Table Where UpID>"& Up_Id)
If not objRS.Eof Then
Up_Id=objRS("UpID")
Test Up_Id
Else
Response.Write "OK,都符合要求!"
objRS.Close
Exit Function
End If
End FunctionTop
5 楼wzhiyuan(我是谁)回复于 2005-09-01 14:50:06 得分 20
你的要求描述的不是很清楚,
每个UPID值最多只有两条记录,还是可能有两条以上?
其实这个不需要递归,循环就行了。
Top
6 楼chenlianjia(Water.Net)回复于 2005-09-03 10:03:28 得分 0
每个UPID最多只能有两个记录,在增加的时候判断是不是已经有两条了,如果有两条了把第三条记录的UPID设置为当然这两的其中一个ID的值,比如UPID=5的记录有两条,那们下一条记录就要设置UPID=7Top




