我正在使用MS SQL 2005。我将树结构定义为:
1
|\
2 3
/|\
4 5 6 我已经创建了一个SQL-function Subs( id ),它获取id并返回子树表。因此,Subs(3)将返回4行,共3,4,5,6行,而Subs( 2 )将返回一行,共2行。
我有一条select语句返回上面的I(将此树与其他表连接)
我想要在返回上述Ids的select语句之后
(例如,这将产生一个包含两行的表:)
2
3为了能够以如下方式运行Subs-function
Subs(2)
union
Subs(3).(结果应该是id为2,3,4,5,6的行)
问题是我不知道如何传递参数,也不知道如何动态使用联合。
有没有可能在这个级别解决这个问题,或者我应该把它带到更高的级别(C#)?
发布于 2009-03-31 13:36:48
我不认为这里需要UNION,使用SQL Server 2005,您可以使用CROSS APPLY获得所需的结果:
select
f.*
from
resultsTable rt
cross apply dbo.subs(rt.ID) f假设resultTable存储第一个查询的结果,并且字段的名称为ID
发布于 2009-03-31 13:33:30
我觉得你应该好好读一读Recursive Common Table Expressions的内容。
https://stackoverflow.com/questions/700950
复制相似问题