在SQL Server表OBJECTS
中,某些对象是从另一个对象派生的,并且它可能无限多层深。另一个表包含对象的ATTRIBUTES
,但它列出了主(父)对象的属性,但没有列出其派生对象的属性。我正在寻找一种方法来获取具有特定属性的所有对象(可能导出也可能不导出)?
我认为公用表表达式(递归查询)是要走的路,但我不明白如何使用它。
DDL:
CREATE TABLE OBJECTS
(
[ID] INT,
[PARENTID] INT,
[ObjectName] VARCHAR(32)
);
INSERT INTO OBJECTS ([ID], [PARENTID], [ObjectName])
VALUES
(1, 0, 'Parent1'),
(2, 1, 'Parent2'),
(3, 1, 'Item1'),
(4, 1, 'Item2'),
(5, 2, 'Item3'),
(6, 0, 'Item4'),
(7, 0, 'Item5');
CREATE TABLE ATTRIBUTES
(
[ID] INT,
[AttributeName] VARCHAR(1)
);
INSERT INTO ATTRIBUTES ([ID], [AttributeName])
VALUES
(1, 'A'),
(1, 'B'),
(2, 'C'),
(2, 'D'),
(3, 'F'),
(6, 'C'),
(7, 'A');
示例问题:如何列出所有对象(本地'以及从父对象派生)的属性为' A'?
期望的输出:
ID OBJECTNAME
---------------
1 Parent1
2 Parent2
3 Item1
4 Item2
5 Item3
7 Item5
答案 0 :(得分:0)
<textarea style="font-family:monospace;"> |
中文字|
123456|
Englis|</textarea>