我对这个问题感到棘手。我看过一些示例,介绍如何在自我引用的表中获取所有子记录,甚至如何获取子记录的父记录。
而我正在尝试返回一个记录及其ID下的所有子记录。
为了更好地理解,我有一个公司层级结构:
#Role Level#
--------------------
Corporate 0
Region 1
District 2
Rep 3
我需要一个过程来(1)确定记录的级别和(2)检索该记录和所有子记录。 这样做的想法是一个地区可以看到该地区的所有分区和代表,分区只能看到他们的代表。代表只能看到自己。 我有一个表:
ID ParentId Name
-------------------------------------------------------
1 Null Corporate HQ
2 1 South Region
3 1 North Region
4 1 East Region
5 1 West Region
6 3 Chicago District
7 3 Milwaukee District
8 3 Minneapolis District
9 6 Gold Coast Dealer
10 6 Blue Island Dealer
我该如何做到这一点:
CREATE PROCEDURE GetPositions
@id int
AS
BEGIN
--What is the most efficient way to do this--
END
GO
例如,对于@id = 3的预期结果,我想要返回:
3, 6, 7, 8, 9, 10
我很感激您对此提供任何帮助或想法。