我在这方面遇到了困难。我已经看到了一些示例,这些示例说明了如何从给定父级的自引用表中获取所有子级记录,甚至如何获取子级记录的父级。
我想做的是返回一条记录,并给所有子记录指定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
我将不胜感激,对此有任何帮助或想法。
您可以通过递归CTE来做到这一点:
DECLARE @id INT = 3;
WITH rCTE AS(
SELECT *, 0 AS Level FROM tbl WHERE Id = @id
UNION ALL
SELECT t.*, r.Level + 1 AS Level
FROM tbl t
INNER JOIN rCTE r
ON t.ParentId = r.ID
)
SELECT * FROM rCTE OPTION(MAXRECURSION 0);
[**ONLINE DEMO**](https://data.stackexchange.com/stackoverflow/query/476511)
问题内容: 我有一个包含一个类别的FK的产品表,创建类别表的方式是每个类别都可以有一个父类别,例如: 我需要进行选择查询,如果选择的类别是“处理器”,它将返回英特尔,奔腾,Core 2 Duo,AMD等产品。 我考虑过要创建某种“缓存”,该缓存将为数据库中的每个类别存储层次结构中的所有类别,并在where子句中包含“ IN”。这是最好的解决方案吗? 问题答案: 最好的解决方案是在数据库设计阶段。您
我有一个绑定到MVVM可观察集合的TreeView。我的项目模板由图像和文本块组成,如以下代码所示: 当然,发生这种情况是因为堆栈面板现在位于选择区域上方。 有什么解决办法吗?
问题内容: 我有课: 然后创建对象: 尝试获取所有字段后,我打电话 但是我只有一个数组 如何从所有类的所有字段包括扩展? 问题答案: 请尝试以下操作:
问题内容: 我试图从我的MySQL数据库中按层次结构获取所有类别和子类别: 我的结果应该是这样(只是示例): 猫A 子猫1 Sub_Sub_Cat 1 Sub_Sub_Cat 2 子猫2 猫B C猫 … MySQL代码: 简而言之,如何在使用 PHP代码 的层次结构中获得它? 问题答案: 使用邻接表模型时,您可以一次性生成结构。 取自一遍父子数组结构(2007年9月; Nate Weiner撰写)
我正在尝试建立自己的Webshop。 我有两个表-products和categories。结构是这样的: 当用户点击main category时,我选择要显示的产品如下所示: 问题是,我希望当用户单击主类别时,也可以选择其子类别中的所有产品。例如,类别是类别的子类别,在db中类似于 如您所见,我的当前选择将不会选择或,因为用户正在查看具有的类别...如何修改我的选择,使它将显示所有产品从主类别的子
除了基本的选择器外,jQuery的层级选择器更加灵活,也更强大。 因为DOM的结构就是层级结构,所以我们经常要根据层级关系进行选择。 层级选择器(Descendant Selector) 如果两个DOM元素具有层级关系,就可以用$('ancestor descendant')来选择,层级之间用空格隔开。例如: <!-- HTML结构 --> <div class="testing"> <u