我想问,类似这种的问题,除了递归,还有什么方法吗
比如表A
字段: AID,A,B,C,D,PreID
其中AID是主键,PreID是父节点,如果没有父节点,那这个字段是NULL或者空串,
现在是传一个AID值过来,找出AID对应的父节点的行以及这个父节点如果还有父节点,那继续找,直到PreID为空
遇到这种类型的,我就懂递归去查
;WITH cte AS
(
SELECT cli.CLID,cli.PreCLID FROM ContractLabor_Info AS cli WHERE CLID=16678
UNION ALL
SELECT cli.CLID,cli.PreCLID FROM cte a JOIN ContractLabor_Info cli ON cli.CLID=a.PreCLID
)
SELECT vcli.* FROM cte A JOIN View_ContractLabor_Info vcli ON a.CLID=vcli.CLID
大概上面的形式....
但是现在的问提是,我要生成一张视图怎么办....比如
id是 5 的父节点 是4, 4的父节点是2
这样我需要的是 select * from View_AAAA where id=5
这样就返回 三条数据 怎么弄。
我上面的递归虽然也能返回三条数据,但是貌似只能在存储里面了
------解决思路----------------------
用表值函数试试吧,应该可以满足的,视图里面调用表值函数
------解决思路----------------------
写成表值函数 ,再cross apply 就可以。