层次结构标识,按子节点查找父节点

时间:2011-06-03 09:52:00

标签: sql-server-2008

我有一个包含以下结构的表

Id         P1              P2(HirarchyId) 
-----     ------           --------------
1          Name1           /1600/1601/
2          Name2           /1300/

hirarchy id的关键是不同表的外键

Id         P2
----       ------
1600       p2Name1
1601       p2Name2
1300       p2Name3

我想写一个查询,它可以根据我通过的P2传递结果。

像这样的东西

select Id, P1 from TableP1 where P2 in (1600, 1300)

我知道这是不可能的,但需要一些替代方案来实现这一目标。如果可能,请告诉我。

1 个答案:

答案 0 :(得分:2)

SELECT TableP1.Id, TableP1.P1
  FROM TableP1
  JOIN TableP2 ON TableP1.P2.ToString() like '/'+TableP2.Id+'%'
              AND TableP2.Id in (1600, 1300)