Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归sql从对/关系表创建树结构_Sql_Sql Server_Recursion_Common Table Expression - Fatal编程技术网

递归sql从对/关系表创建树结构

递归sql从对/关系表创建树结构,sql,sql-server,recursion,common-table-expression,Sql,Sql Server,Recursion,Common Table Expression,我们的帮助台软件在MS-SQL 2008中有一个表,用于跟踪网络中项目之间的关系 我正在尝试创建一个报告,一个树状视图,它可以在多个层次上显示我们网络中的哪些项目,某个项目是需要的 该表包含以下字段: | pair_id | item_id | rel_type_id | |---------|-----------|--------------| | 1 | 1 | 27 | | 1 | 3 | 28

我们的帮助台软件在MS-SQL 2008中有一个表,用于跟踪网络中项目之间的关系

我正在尝试创建一个报告,一个树状视图,它可以在多个层次上显示我们网络中的哪些项目,某个项目是需要的

该表包含以下字段:

| pair_id | item_id   | rel_type_id  | 
|---------|-----------|--------------|
|    1    |    1      |      27      |
|    1    |    3      |      28      | 
|    2    |    1      |      27      |
|    2    |    2      |      28      | 
|    3    |    2      |      27      |
|    3    |    4      |      28      | 
|    4    |    2      |      27      |
|    4    |    5      |      28      | 
其中rel_type_id为:

 28 = depends on 
 27 = needed by
i、 e.Server01是App01所必需的,App01_web所必需的,最终的结果如下:

 1 (Server01)
  +--2 (App01)
     +--4 (App01_web)
     +--5 (App01_console)
  +--3 (db01)
| parent_id | item_id | item_name     | level |
|-----------|---------|---------------|-------|
|     1     |    2    |    App01      |   0   | 
|     1     |    3    |    db01       |   0   |
|     2     |    4    | App01_web     |   1   |
|     2     |    5    | App01_console |   1   |
等等

是否有一种递归解析(即CTE)以查找所有项的方法 取决于此表中的第1项(Server01)

想要的输出是一个如下所示的表:

 1 (Server01)
  +--2 (App01)
     +--4 (App01_web)
     +--5 (App01_console)
  +--3 (db01)
| parent_id | item_id | item_name     | level |
|-----------|---------|---------------|-------|
|     1     |    2    |    App01      |   0   | 
|     1     |    3    |    db01       |   0   |
|     2     |    4    | App01_web     |   1   |
|     2     |    5    | App01_console |   1   |

我在这里尝试了几个CTE示例,但我无法让它们在这个表中正常工作。我怀疑这是因为除了rel_type_id值之外,我在表中没有父/子关系。很遗憾,我无法更改该表。

因此,根据您的输入数据,您希望输出是什么样的?另外,你能分享你到目前为止的尝试吗?添加了想要的输出到问题文本。