【问题标题】:Find root in a database tree-structured table using SQL使用 SQL 在数据库树结构表中查找根
【发布时间】:2012-03-19 14:08:56
【问题描述】:

我有以下描述物料清单 (BOM) 的数据库表,基本上是一个树形结构:

Part(PartId, ParentId, PartName)

ParentId = 0 的零件是成品,这意味着它们不构成任何其他产品。

现在给定一个 PartId,我想通过使用普通 SQL (MS SQL Server) 或 LINQ lambda 知道它属于哪些产品

【问题讨论】:

  • 发布产品表结构..
  • 哪个数据库? Oracle 已连接方式
  • @JustinKirk 没有产品表,parentId = 0 的部分是产品
  • plain SQL 很难做到这一点。您将需要使用递归或迭代 - 我会尝试迭代...

标签: sql sql-server sql-server-2008 hierarchy


【解决方案1】:

尝试以下方法:

;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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多