Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/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
Asp.net 如何查询多根加过滤的嵌套集模型_Asp.net_Sql_Nested Sets - Fatal编程技术网

Asp.net 如何查询多根加过滤的嵌套集模型

Asp.net 如何查询多根加过滤的嵌套集模型,asp.net,sql,nested-sets,Asp.net,Sql,Nested Sets,如何查询具有多个根的嵌套集模型,例如同一表中的树?目前,我添加了一个名为“Root”的额外列,用于指示所有子树节点的根节点的ID,但是,我无法找到按正确顺序检索它们的sql 我指的是那篇文章 通常,按顺序检索项目的查询是按左叶值的顺序进行的,但如果有多个根,则可能会一个接一个地返回多个“left:1”,例如打破树 我目前正在使用一个与SQL完全无关的解决方案。我在我的C#代码中对它们进行了重新安排,但我只是想知道是否有一种方法可以用SQL这样做,从而节省我在web服务器上花费的时间 最后一个问题

如何查询具有多个根的嵌套集模型,例如同一表中的树?目前,我添加了一个名为“Root”的额外列,用于指示所有子树节点的根节点的ID,但是,我无法找到按正确顺序检索它们的sql

我指的是那篇文章

通常,按顺序检索项目的查询是按左叶值的顺序进行的,但如果有多个根,则可能会一个接一个地返回多个“left:1”,例如打破树

我目前正在使用一个与SQL完全无关的解决方案。我在我的C#代码中对它们进行了重新安排,但我只是想知道是否有一种方法可以用SQL这样做,从而节省我在web服务器上花费的时间

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

  • 任务1(进行中)
    • 任务2(活动)
      • 任务3(活动)
如果筛选器要显示状态为“Active”的所有树,您该怎么办?

多个根”仅表示您从第一级开始,并完全忽略“true”根。所以

Root1 (1, 4) Node1 (2, 3) Root2 (5, 12) Node21 (6, 7) Node22 (8, 11) Node221 (9, 10) 根1(1,4) 节点1(2,3) 根2(5,12) 节点21(6、7) 节点22(8、11) 节点221(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) 任务1(进行中)[灰显,不活动] +任务2(活动) +任务3(活动) 另一种方法是使用“网格/树”组合来显示过滤结果,其中节点的路径显示为平坦,但节点下的节点(如果有)显示为树。比如:

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) 任务1->任务2(活动) +任务3(活动) 任务1->任务4->任务6(活动) +任务7(活动)
ChssPly76!我真的很喜欢你对过滤器的想法,这很有意义!!!我从来没有这样想过。我认为在可用性方面,你的第一种方法对非技术用户最有意义,我会完全按照你的建议去做。非常感谢!关于多个根的方法,在执行select时效果很好,但是如果在node1(2,3)下再添加两个新节点会怎么样?所以应该是Node1(1,8)…Node1(2,7)…Node1(3,4)…Node1(5,6)我们得到了重复的值?不客气:-)我不太明白你所说的“重复”是什么意思-如果你要在Node1下添加另一个节点,那么所有大于父节点左索引的左/右索引(例如Node1)都必须更改。不要认为这些“根”是完全分开的;这不是嵌套集模型设计的操作方式。将它们视为在某个“不可见主节点”下的常规节点。所有操作(添加/移动/删除注释)仍然适用于并(可能)影响所有节点。再次感谢ChssPly76。我的大脑没有早点恢复过来。我明白你现在在说什么了。我终于可以在这个周末完成了!