当前位置: 代码迷 >> Sql Server >> SQL数据查询父节点,直到父节点没为止
  详细解决方案

SQL数据查询父节点,直到父节点没为止

热度:29   发布时间:2016-04-24 09:10:54.0
SQL数据查询父节点,,,直到父节点没有为止
我想问,类似这种的问题,除了递归,还有什么方法吗

比如表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 就可以。
  相关解决方案