嗨,我有一个引用自己的表,我需要能够从给定的父ID中选择父及其所有子记录。
我的表如下:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
因此,对于上面的示例,我希望能够传递值1并获取上面的所有记录。
到目前为止,我已经提出了以下递归表值函数,但是它的行为不符合预期(仅返回第一条记录)。
CREATE FUNCTION [dbo].[SelectBranches]
(
@id INT
,@parentId INT
)
RETURNS @branchTable TABLE
(
ID INT
,ParentID INT
,Name INT
)
AS
BEGIN
IF @branchId IS NOT NULL BEGIN
INSERT INTO @branchTable
SELECT
ID
,ParentID
,Name
FROM
tblLinkAdvertiserCity
WHERE
ID = @id
END
INSERT INTO @branchTable
SELECT
br.ID
,br.ParentID
,br.Name
FROM
@branchTable b
CROSS APPLY
dbo.SelectBranches(NULL, b.ParentID) br
RETURN
END
GO
你可以试试这个
DECLARE @Table TABLE(
ID INT,
ParentID INT,
NAME VARCHAR(20)
)
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 1, NULL, 'A'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 2, 1, 'B-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 3, 1, 'B-2'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 4, 2, 'C-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 5, 2, 'C-2'
DECLARE @ID INT
SELECT @ID = 2
;WITH ret AS(
SELECT *
FROM @Table
WHERE ID = @ID
UNION ALL
SELECT t.*
FROM @Table t INNER JOIN
ret r ON t.ParentID = r.ID
)
SELECT *
FROM ret
我的表格如下: 现在,我需要一个查询,该查询可以为每个至少有一个子记录的记录获取所有可能的子记录,并返回如下数据集:
问题内容: 我有这个小问题。 该表基本上如下所示 学科 SubjectId SubjectName ParentSubjectId 引用主题表本身。并且可以下降很多级别(没有特定数量的级别) 示例(仅出于示例目的,使用国家/地区): 等等.. SubjectID是GUID ParentSubjectID也是GUID。 样本概述:http : //i.imgur.com/a2u2CfT.png 它甚
问题内容: 我想知道如何在给定父范围的情况下获取所有子范围的列表。我可以从该范围的属性中找到$ childHead,$ childTail,$ nextSibling和$$ prevSibling。 我现在使用的方法是从父级获取childHead,然后使用nextSibling获取下一个孩子,直到nextSibling为空。 有没有更好的方法?鉴于我想在所有子项上调用方法[getModel],是否
我想使用JOOQ递归地获取自引用表的父级和子级。 目标是直接在POJO中获取。 我没有在JOOQ留档或其他任何地方找到任何这样的例子,但我认为结合多集和递归JOOQ方法是可能的。https://www.jooq.org/doc/3.14/manual/sql-building/sql-statements/with-recursive-clause/https://www.jooq.org/doc
问题内容: 我说有Python清单。我也有一个索引列表,例如。如何获取带有索引的元素的列表? 问题答案: 您可以使用 列表推导 来获取该列表: 这等效于: 输出: 注意: 请记住,这是用于访问特定索引中a元素的表示法。
问题内容: 一个活动有很多参与者。参与者的字段为“状态”。 我需要找到除以下事件以外的所有事件:每个参与者的状态都为“出席”的事件。 我可以找到带有以下AR代码的某些参与者处于“呈现”状态的所有事件: 这样就创建了SQL: 这 几乎 可行。问题是,如果参与者的某行(在范围内 )的状态为“离开”,则该事件仍将被获取,因为至少某些同级记录的状态与其他状态相同而不是“现在”。 我需要确保我正在过滤所有事