从自引用表中获取所有子项(子代,子代)和父代

米歇尔

我想创建一个“可选方法”(无论它是视图还是函数,存储过程或其他东西,我都不知道是否还有其他方法)来获取所有直接父级和所有子级,自孙表中的,孙,孙代等记录。我想从C#(.NET)调用的“可选方法”

我们有一个名为的表entities,(除其他外)它具有一个属性parentId该属性引用Identities字段通过这种方式,我们对实体树进行建模(在我们的案例中是建筑物,思想屋,地板,房间等的元素)

父节点(如果可视化)是形成到根元素的直线的节点。

如果可视化,子节点可以“展开”。

如果必须在两个单独的语句中进行选择就可以了。

在C#中,我知道如何执行此操作,但是我不想向数据库发出大量请求,并且我认为Sql Server本身可以快速执行此操作,但我不知道如何进行:-)

钢铁怪胎

尝试使用以下递归CTE作为解决方案的基础:

WITH TREE AS (
  SELECT     ROOT.Id        
            ,ROOT.ParentId  
            ,ROOT.Prop1
            ,ROOT.Prop2 
            ...
            ,ROOT.PropN                 
            ,1 AS Level 
  FROM       ENTITIES ROOT      
  -- list entities starting from ROOT node (no ParentId)
  WHERE      ROOT.ParentId IS NULL 
  -- or list entities starting from a specified node
  -- WHERE ROOT.Id = @entityId

  UNION ALL

  SELECT     CHILD.Id
            ,CHILD.ParentId 
            ,CHILD.Prop1
            ,CHILD.Prop2    
            ...
            ,CHILD.PropN                
            ,PARENT.Level + 1
  FROM       ENTITIES CHILD INNER JOIN 
             TREE PARENT ON CHILD.ParentId = PARENT.Id
  WHERE      CHILD.ParentId IS NOT NULL
)

SELECT *  FROM TREE

如果需要传递参数,可以将CTEaVIEW或a放在其中Stored Procedure

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从自引用表中获取所有子项(子代,子代)和父代

来自分类Dev

如何在SQL Server表中为所有直接或间接子代查找根父代?

来自分类Dev

jQuery隐藏所有子代的父代

来自分类Dev

赋予容器其子代的所有权,但让子代使用智能指针存储对其父代的引用

来自分类Dev

sql-在自引用表中获取带或不带子代的parentID

来自分类Dev

python BeautifulSoup在div的子代中获取所有href

来自分类Dev

ReactJS:从子代和父代控制子代状态

来自分类Dev

如何查找ASTNode的所有子节点(子代和子代子代)

来自分类Dev

jQuery将类添加到标签的子代和所有标签的子代的子代

来自分类Dev

MongoDB-子代和父代结构

来自分类Dev

指定的子代已具有父代异常

来自分类Dev

Active Record-如何在一个查询中获取所有直接和间接子代

来自分类Dev

如何在Angular2中查找DOM元素的子代和父代

来自分类Dev

如何从子代中选择数据,它是Oracle中树的父代和根

来自分类Dev

重用ListView行中的视图-“指定的子代已经有一个父代”异常

来自分类Dev

在C中创建三个具有相同父代的子代

来自分类Dev

如何获取实例化的Canvas Element Prefab的所有子代

来自分类Dev

Angular 2路由问题子代和父代

来自分类Dev

对象中所有子代的javascript getter和setter

来自分类Dev

对象中所有子代的javascript getter和setter

来自分类Dev

IllegalStateException:指定的子代已经有一个父代

来自分类Dev

使用FragmentStatePagerAdapater的“指定的子代已经有父代”错误

来自分类Dev

如何缓解指定的子代已经有父代(IllegalStateException)错误?

来自分类Dev

FragmentTabHost:指定的子代已经有一个父代

来自分类Dev

当子代中继器为空时隐藏子代和父代中继器

来自分类Dev

flex容器的子代超过父代

来自分类Dev

PHP为数组中的子代分配父代ID

来自分类Dev

无法在Python中从子代传播到父代方法的值

来自分类Dev

反应:如何在父代的渲染函数中检查子代的类型?

Related 相关文章

  1. 1

    从自引用表中获取所有子项(子代,子代)和父代

  2. 2

    如何在SQL Server表中为所有直接或间接子代查找根父代?

  3. 3

    jQuery隐藏所有子代的父代

  4. 4

    赋予容器其子代的所有权,但让子代使用智能指针存储对其父代的引用

  5. 5

    sql-在自引用表中获取带或不带子代的parentID

  6. 6

    python BeautifulSoup在div的子代中获取所有href

  7. 7

    ReactJS:从子代和父代控制子代状态

  8. 8

    如何查找ASTNode的所有子节点(子代和子代子代)

  9. 9

    jQuery将类添加到标签的子代和所有标签的子代的子代

  10. 10

    MongoDB-子代和父代结构

  11. 11

    指定的子代已具有父代异常

  12. 12

    Active Record-如何在一个查询中获取所有直接和间接子代

  13. 13

    如何在Angular2中查找DOM元素的子代和父代

  14. 14

    如何从子代中选择数据,它是Oracle中树的父代和根

  15. 15

    重用ListView行中的视图-“指定的子代已经有一个父代”异常

  16. 16

    在C中创建三个具有相同父代的子代

  17. 17

    如何获取实例化的Canvas Element Prefab的所有子代

  18. 18

    Angular 2路由问题子代和父代

  19. 19

    对象中所有子代的javascript getter和setter

  20. 20

    对象中所有子代的javascript getter和setter

  21. 21

    IllegalStateException:指定的子代已经有一个父代

  22. 22

    使用FragmentStatePagerAdapater的“指定的子代已经有父代”错误

  23. 23

    如何缓解指定的子代已经有父代(IllegalStateException)错误?

  24. 24

    FragmentTabHost:指定的子代已经有一个父代

  25. 25

    当子代中继器为空时隐藏子代和父代中继器

  26. 26

    flex容器的子代超过父代

  27. 27

    PHP为数组中的子代分配父代ID

  28. 28

    无法在Python中从子代传播到父代方法的值

  29. 29

    反应:如何在父代的渲染函数中检查子代的类型?

热门标签

归档