数据库表
id     sb_1     sb_2
5       23       24
6       23       25
7       24       32
8       32       26
9       26       33把相关的数据按一个记录查出来

解决方案 »

  1.   

    “相关”的关系还是没说清,是不是查32时找到id=7的记录,再根据id=7的记录中的sb_1=24再找sb_2=24的记录id=5,这样一连串地找下去?如果是,按这种“相关”性,为什么没有25(id=6)呢?
      

  2.   

    create table tb
    (
    id int identity(5,1),
    sb_1 int,
    sb_2 int
    )
    insert into tb 
    select 23,24 union all
    select 23,25 union all
    select 24,32 union all
    select 32,26 union all
    select 26,33
    go--查找所有父结点及子节点的问题,当前假设sb_1为父结点,sb_2为子结点建立函数,查找所有子结点
    CREATE FUNCTION f_Pid(@sb_1 int)
    RETURNS @t_Level TABLE(sb_1 int,Level int)
    AS
    BEGIN
    DECLARE @Level int
    SET @Level=1
    INSERT @t_Level SELECT @sb_1,@Level
    WHILE @@ROWCOUNT>0
    BEGIN
    SET @Level=@Level+1
    INSERT @t_Level SELECT a.sb_2,@Level
    FROM tb a,@t_Level b
    WHERE a.sb_1=b.sb_1
    AND b.Level=@Level-1
    END
    RETURN
    END
    GOselect * from dbo.f_Pid(23)sb_1        Level
    ----------- -----------
    23          1
    24          2
    25          2
    32          3
    26          4
    33          5(6 行受影响)
    如要查子结点,在函数中做相应操作即可