【发布时间】:2009-10-20 18:49:42
【问题描述】:
我有一个 MySQL 数据库(由 Wordpress 创建),它类似于它的外观:
ID parentID otherStuff
54 55 this is a test
55 56 another test
56 0 last test
我需要做的是检查页面的深度。我知道当它到达 parentID 0 时它就完成了。
我可以编写 3 个查询,然后检查何时等于 0,但如果只有 1 个查询可能会更好。可能吗?怎么样?
这是一个例子:
- ID:56 的父节点为 0,深度为 0。(现在为 1 个查询)
- ID:55 的父项是 56,然后是 0,DEPTH 是 1。(现在有 2 个查询)
- ID:54 的父项是 55,然后是 56,然后是 0,并且 DEPTH 为 2。(现在是 3 个查询)
我在get_depth()get_depth() 处以“错误的方式”解决了它(每个深度级别一个查询)
问题在于它是一个递归函数,每个深度都需要一个查询。
【问题讨论】:
-
MySQL 中的分层查询:explainextended.com/2009/08/17/…
-
MySQL 中的邻接表与嵌套集:explainextended.com/2009/09/29/…