想写个函数 实现输入一个id 返回所有子id的功能
例如下表
id username parentid
1 A 0
2 B 1
3 C 2
4 D 1
5 E 2
6 F 5
输入1 后返回 2356自己写的函数如下: Public Function getNodes(ByVal pid As Integer)        Dim tempDv As DataView
        tempDv = tmpdt.DefaultView
        tempDv.RowFilter = "pid=" & pid
        Dim i As Integer
        For i = 0 To tempDv.Count - 1
            Dim uid As Integer
            uid = tempDv.Item(i)("uid")
            ----> getNodes(uid) <----
            tmpArr.Add(uid)
        Next
        Return tmpArr
End Function其中tmpdt就是一个select * from temptable 的datatable
如果不加getNodes(uid)这一句就只能查出一层的子id
我想查出所有的子id! 有不知道该怎么写!请高人指教!谢谢! 

解决方案 »

  1.   

    各种数据库的查询方式不尽相同,以下是一个oracle数据库中的查询方式,你可参考一下select a.brc_parentid, 
          a.brc_id, 
          lpad('||',a.brc_level-1)||a.brc_name brc_name,
          rownum sno 
    from asm_branch a 
    CONNECT BY a.brc_parentid = PRIOR a.brc_id 
    START WITH a.brc_id = 0
      

  2.   

    如果你可以修改你的数据库的话,你可再加一个列,此列如下:
    id username parentid code
    1 A 0 1
    2 B 1 1_2
    3 C 2 1_2_3
    4 D 1  1_2_4
    5 E 2  1_2_5
    6 F 5 1_2_5_6
    如此,要取所有的ID,就非常容易了,直接拆分即可.当然,这种做法,需要你实时进行维护,数据一旦有修改,就必须维护这一列.