加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何查询具有多个根和过滤的嵌套集模型

发布时间:2020-12-16 06:52:35 所属栏目:asp.Net 来源:网络整理
导读:如何查询具有多个根的嵌套集模型,例如同一个表中的树?目前,我添加了一个名为“Root”的额外列,表示所有子树节点的根节点的ID,但是,我无法找出sql以正确的顺序检索它们 我指的是文章Managing Hierarchical Data in MySQL. 通常,按顺序检索项目的查询是按左叶
如何查询具有多个根的嵌套集模型,例如同一个表中的树?目前,我添加了一个名为“Root”的额外列,表示所有子树节点的根节点的ID,但是,我无法找出sql以正确的顺序检索它们

我指的是文章Managing Hierarchical Data in MySQL.

通常,按顺序检索项目的查询是按左叶值的顺序,但是有多个根,你可以一个接一个地结束多个“left:1”,这样就打破了树.

我目前正在使用完全与SQL无关的解决方案.我将它们重新安排在我的C#代码中,但我只是想知道是否有办法用SQL来实现它,这样可以节省我在Web服务器上花费的时间

最后一个问题.如果我有一个过滤器,它从树中过滤掉一些数据,你如何处理它?

>任务1(进行中)

>任务2(主动)

>任务3(主动)

如果过滤器要显示状态为“活动”的所有树,您会怎么做?

解决方法

“多根”只是意味着你从第一级开始并完全省略“真正的”根.所以,

 Root1 (1,4)
   Node1 (2,3)

 Root2 (5,12)
   Node21 (6,7)
   Node22 (8,11)
     Node221 (9,10) 

不要重启左/右索引上的序列;你会走进一个受伤的世界.

就你的过滤器问题而言,这完全是一个介绍问题.有不同的方法来处理这个问题;我过去使用的那个是显示通向节点的路径中的所有节点满足您的过滤条件但突出显示“过滤”节点并使它们不可操作(例如,无法在UI中选择,操作可以不要对他们进行等等……).就像是:

Task 1 (In progress) [greyed out,inactive]
 +Task 2 (Active)
  +Task 3 (Active)

另一种方法是使用网格/树组合来显示过滤结果,其中节点的路径显示为扁平,但节点下的节点(如果有)显示为树.就像是:

Task1 -> Task 2 (Active)
 + Task 3 (Active)
Task1 -> Task 4 -> Task 6 (Active)
 + Task 7 (Active)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读