TSQL从递归表中获取所有行

本文关键字:获取 递归 TSQL | 更新日期: 2023-09-27 18:27:51

这是问题的后续:SQL Server以特定格式显示数据树

现在我们有了第二个表,它与"叶"行上的第一个表相关:

表1:

   Itemid   Itemname    Itemfatherid
    itemA    theitemA    null
    itemB    theitemB    null
    itemC    theitemC    itemA
    itemD    theitemD    itemA
    itemE    theitemE    itemC
    itemF    theitemF    itemE
    itemG    theitemG    itemD

在这张表中,项目F和项目G将是树叶(他们没有孩子)

表2:

   Itemid   RelItemid
    item1    itemF
    item2    itemF
    item3    itemG

视觉关系如下:

-itemA
    -itemC
        -itemE
            itemF (item1, item2)
    -itemD
        itemG (item3)
itemB

我们需要从第二个表中获取与第一个表相关的所有行,通过特定的节点进行过滤。

示例:

Filtering by node itemA: item1, item2, item3
Filtering by node itemE: item1, item2
Filtering by node itemD: item3
Filtering by node itemG: item3
Filtering by node itemB: 

抱歉发了这么长的帖子,这是为了盖住任何洞。。。感谢

TSQL从递归表中获取所有行

我认为使用公共表表达式的递归查询!可能会使用完整的

最后,我们通过循环结果和执行sql从第二个表中获取相关行来解决这个问题。。。不是所需的解决方案,而是一个可行的