我有两张表格如下:
父子关系(表1):
SourceId SourceParentId
1 null
2 1
3 2
4 null
Items (Table 2):
Id SourceId
1 1
2 1
3 2
4 2
5 3
6 4
如何编写一个linq查询,根据源ID返回所有项目?如果我的输入是SourceId = 1,我将得到项目1,2,3,4& 5.如果我对sourceId的输入为2,我将得到3项:3,4和& 5.如果我对sourceID的输入是4,它将返回第6项。我的父子是N级,项目可以出现在任何级别。 帮助:(
答案 0 :(得分:0)
这里试试这个
--Variable to hold input value
DECLARE @inputSourceID INT = 1;
--Recursive CTE that finds all children of input SourceID
WITH MyCTE
AS
(
SELECT SourceID,
SourceParentID
FROM table1
WHERE SourceID = @inputSourceID
UNION ALL
SELECT table1.SourceID,
table1.SourceParentID
FROM table1
INNER JOIN MyCTE
ON table1.SourceParentID = MyCTE.SourceID
)
--Join the CTE with the table2 to find all id
SELECT table2.ID
FROM MyCTE
INNER JOIN table2
ON MyCTE.SourceID = table2.SourceID