我有一個自我引用表來存儲的層級值的樹基地的後裔(路),以顯示他們在一個TreeView或等等,根據詹姆斯·克勞利文章(Tree structures in ASP.NET and SQL Server)檢索多個值
Our table would look something like this:
Id ParentId Name Depth Lineage
1 NULL Root Node 0 /1/
2 1 Child A 1 /1/2/
3 1 Child B 1 /1/3/
4 1 Child C 1 /1/4/
5 2 Child D 2 /1/2/5/
獲取一個節點的路徑(例如ID = 5),他提出以下查詢表對
SELECT *
FROM dfTree
WHERE (SELECT lineage
FROM dfTree
WHERE id = 5) LIKE lineage + '%'
結果將是:
Id ParentId Name Depth Lineage
1 NULL Root Node 0 /1/
2 1 Child A 1 /1/2/
5 2 Child D 2 /1/2/5/
而且是可以接受的
但如何有當有多個ID,我想有自己的路徑的結果集?因此,例如在上面的例子中,而不是編號= 5我想傳遞多個值是這樣的:
SELECT *
FROM dfTree
WHERE (SELECT lineage
FROM dfTree
WHERE id IN (5,6,8,9)) LIKE lineage + '%'
但上述說法沒有任何意義,這是無效的SQL服務器表達
我怎麼能解決這個問題問題?
在此先感謝
你想記錄,其中的ID是你正在尋找的是頂級家長,孩子還是血統中的任何地方? – 2012-03-07 12:37:31