使用SQL在数据库树结构表中查找根
下面的DB表描述了物料清单(BOM),基本上是一个树状结构:使用SQL在数据库树结构表中查找根,sql,sql-server,sql-server-2008,hierarchy,Sql,Sql Server,Sql Server 2008,Hierarchy,下面的DB表描述了物料清单(BOM),基本上是一个树状结构: Part(PartId, ParentId, PartName) ParentId为0的零件是成品,这意味着它们不构成任何其他产品 现在给出一个PartId,我想通过使用纯SQL(MS SQL Server)或LINQ lambda知道它属于哪些产品,请尝试以下操作: ;WITH CTE AS ( SELECT PartId, ParentId FROM Part WHERE PartId = @PartId
Part(PartId, ParentId, PartName)
ParentId为0的零件是成品,这意味着它们不构成任何其他产品
现在给出一个PartId,我想通过使用纯SQL(MS SQL Server)或LINQ lambda知道它属于哪些产品,请尝试以下操作:
;WITH CTE AS
(
SELECT PartId, ParentId
FROM Part
WHERE PartId = @PartId
UNION ALL
SELECT B.PartId, B.ParentId
FROM CTE A
INNER JOIN #Part B
ON A.ParentId = B.PartId
)
SELECT DISTINCT PartId
FROM CTE
WHERE ParentId = 0
发布产品表结构..哪个数据库?甲骨文已连接BY@JustinKirk没有产品表,parentId=0的零件是产品使用普通SQL很难做到这一点。您将需要使用递归或迭代-我将尝试迭代。。。