Найти корень в древовидной таблице базы данных с помощью SQL - PullRequest
2 голосов
/ 19 марта 2012

У меня есть следующая таблица БД, описывающая спецификацию, в основном древовидную структуру:

Part(PartId, ParentId, PartName)

Детали с ParentId = 0 являются готовым продуктом, что означаетони не составляют какой-либо другой продукт.

Теперь, имея PartId, я хотел бы знать, к каким продуктам он относится, используя простой SQL (MS SQL Server) или LINQ lambda

1 Ответ

1 голос
/ 19 марта 2012

Попробуйте следующее:

;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
...