我有一个自我引用表来存储的层级值的树基地的后裔(路),以显示他们在一个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