Sql 多嵌套(递归)类查询继承

Sql 多嵌套(递归)类查询继承,sql,sql-server,recursive-query,Sql,Sql Server,Recursive Query,我有一个包含一些类别的表,这些类别将有一些子类别,这些子类别可能有自己的子类别,此流将继续流向未知数量的子类别或父类别 例如,我有两个主要类别,这两个类别有5个儿童类别,这5个类别有自己的15个儿童类别(每个类别3个),这15个儿童类别可能有一些儿童,等等 我需要一个查询来找出所有与其父类别相关联的子类别。请参见下图 我从堆栈溢出中尝试了类似于此情况的解决方案,但没有一个像我想做的那样对我有效 有没有一种方法可以在SQL Server中实现这一点 感谢您的帮助基于预期的输出,我认为不需要使用递

我有一个包含一些类别的表,这些类别将有一些子类别,这些子类别可能有自己的子类别,此流将继续流向未知数量的子类别或父类别

例如,我有两个主要类别,这两个类别有5个儿童类别,这5个类别有自己的15个儿童类别(每个类别3个),这15个儿童类别可能有一些儿童,等等

我需要一个查询来找出所有与其父类别相关联的子类别。请参见下图

我从堆栈溢出中尝试了类似于此情况的解决方案,但没有一个像我想做的那样对我有效

有没有一种方法可以在SQL Server中实现这一点


感谢您的帮助

基于预期的输出,我认为不需要使用递归。一个简单的左连接就可以了

见下文:

CREATE TABLE CAR_CATEGORY(
ID INT,
NAME NVARCHAR(256),
PARENT INT,
is_parent NVARCHAR(3));

INSERT INTO CAR_CATEGORY(ID,NAME,PARENT,is_parent) VALUES
(1,'AUTO Sector',0,'yes'),
(2,'4 wheelers',1,'yes'),
(3,'Cars',2,'yes'),
(4,'Diesel cars',3,'yes'),
(5,'Petrol cars',3,'yes'),
(6,'CNG cars',3,'yes'),
(7,'Suzuki Diesel cars',4,'no'),
(8,'TATA Petrol cars',5,'yes'),
(9,'TATA Nexon',8,'no')

SELECT 
   CAR_CAT1.NAME ParentCategory, 
   COALESCE(CAR_CAT2.NAME,'No child') AS ChildCategory
FROM 
   CAR_CATEGORY CAR_CAT1
LEFT JOIN CAR_CATEGORY CAR_CAT2 ON
   CAR_CAT1.ID = CAR_CAT2.Parent
WHERE 
   CAR_CAT1.is_parent = 'yes'

1) 请以格式化文本而不是图像的形式发布数据。这使得人们可以复制并粘贴它进行测试。最好还是提供DDL/DML语句(临时表创建+填充)。2) 请向我们展示你的尝试,即使它不起作用。感谢你让我知道我在这个问题上犯的错误。下次我会尽量避免这种错误。谢谢你的回答。答案是有帮助的,但在我有大量数据时无法正确工作。这是不包括所有的数据,该级别是在孙子之后。但我可以提供我的表的示例数据。再次感谢您是否希望获得层次结构中每个父级的子代的完整列表?像父母、孩子、孙子等等?是的,正确!但我不知道我将有多少子级或它的级别,因为所有数据都是动态的,可能有N个级别。其中N=any+ve数字。如果我理解正确,在左边的列中,您将只有父节点,在右边的列中有其子节点的列表?是的,右边,但子节点也可以是父节点。所以在这种情况下,它将同时位于子列的第一位和子列的父列的第二位。