2011-06-03 70 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