MySQL Looped Join如何测试结果是否完整?

2023-12-25

情况:
我有一个 mysql 目录表。每个目录都有一个父目录(存储为parentID),直到根目录的parentID为0为止。

E.g.:

rowID: 1, name: Dir1,    parentID: 0 (root directory)
rowID: 2, name: Dir2,    parentID: 0 (root directory)
rowID: 3, name: Subdir1, parentID: 1 (lives in "Dir1")
rowID: 4, name: Subdir2, parentID: 1 (lives in "Dir1")
rowID: 5, name: Subdir3, parentID: 3 (lives in "Subdir1", which in turn lives in "Dir1")
rowID: 6, name: Subdir4, parentID: 5 (lives in "Subdir3", which lives in "Subdir1", which lives in "Dir1")

所以这里有一个3目录深度的结构。

我需要构建一个语句,将任何目录连接到其父目录,并继续这样做,直到最后一个连接的目录的 ParentID 为 0(即找到根目录)。您可以将其想象为,给定任何目录,您都可以找到返回到父目录的面包屑。

我认为这可能需要一些 MySQL 循环,但在我的一生中,我无法让任何 Web 示例运行。我什至无法运行一些示例,因为它们似乎存在某种语法错误。有人可以帮助我开始吗?

我可以接受任何最简单且能提供最佳性能的结果格式来完成此任务。要么是按正确顺序排列的简单行号数组(例如 5、3、1、0,表示达到 ID 0 的步骤),要么是完整的表(最好),它是实现此目的的有序行列表,例如

rowID: 5, name: Subdir3, parentID: 2;
rowID: 3, name: Subdir1, parentID: 1;
rowId: 1, name: Dir1,    parentID: 0;

非常感谢帮助!


好吧,可能是您没有找到好的网络示例,因为您确实使用了错误的搜索词。 所描述的问题完全适合 oracle CONNECT BY PRIOR 语句,并通过谷歌搜索与此语句等效的 mysql,您会发现http://explainextend.com/2009/03/17/hierarchical-queries-in-mysql/ http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/蛮快。

因为写这些东西并不那么容易(而且我这里没有 mysql-db 可以强奸​​),只需看一下给出的好例子(你甚至可以在不部署函数的情况下做到这一点)http://explainextend.com/2009/07/20/hierarchical-data-in-mysql-parents-and-children-in-one-query/ http://explainextended.com/2009/07/20/hierarchical-data-in-mysql-parents-and-children-in-one-query/.

如果你还是不明白这些,我也许可以在家里提供帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL Looped Join如何测试结果是否完整? 的相关文章

随机推荐