当前位置: 首页 > 面试题库 >

返回多对多层次树中的所有节点

慕容念
2023-03-14
问题内容

但是我 没有 关闭(展平)表,一个孩子可以有很多父母,并且ID遍历不一定是按顺序进行的。嵌套深度没有限制。

假设不可能使用循环引用…我想返回遍历层次结构所需的所有行。

假定下表​​:

ParentID    ID    RowNumber(Reference)
1           2     1
2           4     2
4           3     3
3           5     4
1           6     5
6           7     6
2           8     7
3           9     8
1           8     9
6           8     10

给定1我将如何编写单个查询以返回所有行(获取所有后代的Relationips)?

同样,假设2我期望第2、3、4、7、8行

鉴于6我希望第6和第10行

偶然的假阳性和结果中重复的行都是可以接受的。缺少行是不可接受的

在MSAccess和SQL Server 2000+中实施


问题答案:

由于您需要对节点可以具有多个父节点的数据进行建模,因此嵌套集/
MPTT解决方案将不起作用。

您将创建一个附加表,该表为每个祖先的后代保存成对的项目(反之亦然):

识别码
  1 2
  1 6
  1 4
  1 8
  1 7
  1 3
  1 5
  1 9
  2 4
  2 8
  2 3
  2 5
  2 9
  4 3
  4 5
  4 9
  3 5
  3 9
  6 7

然后,您将使用联接来获取所需的项目:

SELECT * 
FROM Tbl INNER JOIN Closure ON Tbl.ID=Closure.DesID 
WHERE Closure.AncID = 2


 类似资料:
  • 多细节层次 —— 在显示网格时,根据摄像机距离物体的距离,来使用更多或者更少的几何体来对其进行显示。 每一个级别都和一个几何体相关联,且在渲染时,可以根据给定的距离,来在这些级别对应的几何体之间进行切换。 通常情况下,你会创建多个几何体,比如说三个,一个距离很远(低细节),一个距离适中(中等细节),还有一个距离非常近(高质量)。 代码示例 const lod = new THREE.LOD();

  • 我有follow稠密函数,我正在努力理解它 下面的代码是指我的层中有10个节点,还是第一层中有28*28个节点。我问过一个朋友,他们说这意味着你有一个28*28的输入层,然后是一个有10个节点的隐藏层。

  • 问题内容: 是否有可能具有两个返回的函数,如下所示: 如果是这样,我如何才能分别获得每份退货? 问题答案: 无法返回两个变量。虽然,您 可以 传播一个数组并返回它;创建条件以返回动态变量,等等。 例如,此函数将返回 在应用中: 如果您都想要它们,可以稍微修改一下功能

  • 所以我有两到三棵树,它们是在执行一些代码时生成的。此树的每个节点都有一个属性,即它至少有0个子节点,最多有8个子节点。我猜你可以得到这样一个完整的树的图片,在0级有一个根节点。在1级8个节点在2级64个节点,以此类推。父节点的每个子节点的编号从0到7,我在java中将其存储为字节整数类型,顺便说一句,我在java中实现了这一点。 现在我需要合并这两到三棵树,我已经生成,我这样做的水平明智完全不考虑

  • 我正在努力学习RCP中的TreeViewer。我为此写了一小段代码。 我的代码哪里有问题? 谢了!

  • 我有一个C#代码,使用Elastic搜索类型,它将匹配两个字段。我用的是NEST软件包。 问题是,无论我传入什么文本,它都会返回所有结果。我错过了什么?