2011-06-03 41 views
2

找到父我有一个表结构如下层次ID,由孩子

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

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

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

我想编写一个查询其能给出基于P2 I的Id的结果。

像这样

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

我知道这是不可能的,但需要一些替代实现这一目标。请让我知道如果可能或不可以。

回答

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

感谢它适用于微小的更改,需要将HirarchyId转换为字符串。 - ON TableP1.P2.ToString()like'/'+TableP2.Id+'%' - – hungryMind 2011-06-03 10:19:05

+0

'.ToString()'added。 – manji 2011-06-03 10:25:55