多嵌套(递归)查询,如继承
Multi nested (Recursive) Query like inheritance
我有一个包含一些类别的 table,这些类别将有一些 child 个类别,这些 child 个类别可能有自己的 children,这个流程将继续未知数量的 Childs 或 parents.
例如,我有两个主要类别,这两个类别有 5 个 child 类别,这 5 个类别有自己的 15 children(每个 3 个)和 15 child ren 类别可能有一些 children 等等...
我需要查询以找出与其 parent 类别关联的所有 children,请参见下图。
我已经从堆栈溢出中尝试了与这种情况类似的解决方案,但对我来说没有任何效果。
有没有办法在 SQL 服务器中实现这个?
感谢您的帮助
根据预期输出,我认为没有任何使用递归的要求。一个简单的左连接就可以完成这项工作。
见下文:
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'
我有一个包含一些类别的 table,这些类别将有一些 child 个类别,这些 child 个类别可能有自己的 children,这个流程将继续未知数量的 Childs 或 parents.
例如,我有两个主要类别,这两个类别有 5 个 child 类别,这 5 个类别有自己的 15 children(每个 3 个)和 15 child ren 类别可能有一些 children 等等...
我需要查询以找出与其 parent 类别关联的所有 children,请参见下图。
我已经从堆栈溢出中尝试了与这种情况类似的解决方案,但对我来说没有任何效果。
有没有办法在 SQL 服务器中实现这个?
感谢您的帮助
根据预期输出,我认为没有任何使用递归的要求。一个简单的左连接就可以完成这项工作。
见下文:
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'