这个不是树,是(有方向的)网图,描述结点的连接以及走向:create table Go(fromNode int,toNode int)查找从结点@f到@t之间的路径,假设最多只有5个中间结点:select n1.fromNode,n2.fromNode,n3.fromNode,n4.fromNode,n5.fromNode,@t from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode inner join Go as n3 on n2.toNode=n3.fromNode inner join Go as n4 on n3.toNode=n4.fromNode inner join Go as n5 on n4.toNode=n5.fromNode where n1.fromNode=@f and n5.toNode=@t union all select n1.fromNode,n2.fromNode,n3.fromNode,n4.fromNode,@t,null from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode inner join Go as n3 on n2.toNode=n3.fromNode inner join Go as n4 on n3.toNode=n4.fromNode where n1.fromNode=@f and n4.toNode=@t union all select n1.fromNode,n2.fromNode,n3.fromNode,@t,null,null from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode inner join Go as n3 on n2.toNode=n3.fromNode where n1.fromNode=@f and n3.toNode=@t union all select n1.fromNode,n2.fromNode,@t,null,null,null from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode where n1.fromNode=@f and n2.toNode=@t union all select fromNode,@t,null,null,null,null from Go where fromNode=@f and toNode=@t最多有多少个中间结点是可以根据与原始结构判断出来的。 中间结点个数作为变量时,上面查询语句可以方便地用程序来形成,并且进行动态查询。
from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode
inner join Go as n3 on n2.toNode=n3.fromNode
inner join Go as n4 on n3.toNode=n4.fromNode
inner join Go as n5 on n4.toNode=n5.fromNode
where n1.fromNode=@f and n5.toNode=@t
union all
select n1.fromNode,n2.fromNode,n3.fromNode,n4.fromNode,@t,null
from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode
inner join Go as n3 on n2.toNode=n3.fromNode
inner join Go as n4 on n3.toNode=n4.fromNode
where n1.fromNode=@f and n4.toNode=@t
union all
select n1.fromNode,n2.fromNode,n3.fromNode,@t,null,null
from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode
inner join Go as n3 on n2.toNode=n3.fromNode
where n1.fromNode=@f and n3.toNode=@t
union all
select n1.fromNode,n2.fromNode,@t,null,null,null
from Go as n1 inner join Go as n2 on n1.toNode=n2.fromNode
where n1.fromNode=@f and n2.toNode=@t
union all
select fromNode,@t,null,null,null,null
from Go
where fromNode=@f and toNode=@t最多有多少个中间结点是可以根据与原始结构判断出来的。
中间结点个数作为变量时,上面查询语句可以方便地用程序来形成,并且进行动态查询。