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

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

例如.:

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目录深度结构.

我需要构建一条将任何目录都连接到其父目录的语句,并继续这样做,直到最后一个连接目录的父目录ID为0(即找到根目录).您可以想到它,就好像在给定任何目录的情况下,您都可以找到返回到父级的面包屑.

我认为这可能需要一些MySQL循环,但对于我自己的一生,我无法使用任何网络示例.我什至无法运行某些示例,因为它们似乎存在某种语法错误.谁能帮助我入门?

我可以接受任何最简单的结果格式并提供最佳性能来完成此操作.以正确的顺序排列一个简单的行号数组(例如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://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/.

因为编写这些内容并不那么容易(并且我没有在这里强奸mysql-db),所以请看一下给出的好示例(您甚至可以在没有通过http://explainextended.com/2009/07/20/hierarchical-data-in-mysql-parents-and-children-in-one-query/部署功能的情况下完成此操作).

如果您仍然不了解这些建议,我也许可以在家里提供帮助.

上一篇:从for循环创建PHP下拉菜单?


下一篇:php-Foreach在x次之后做某事?