如何使用MySQL和PHP中的嵌套集获取结构化结果?

use*_*729 11 php mysql nested-sets

深度没有限制.

如何获得结构化分支甚至整个树?

定义来自此处:在MySQL中管理分层数据

Joh*_*ter 5

我不确定这是你要求的,但值得注意的是你可以通过使用GROUP_CONCAT并扩展"检索a" 来获取整个树,每条路径一行,每条路径作为字符串,如下所示.单路径"来自http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/的示例

SELECT 
  GROUP_CONCAT(parent.name ORDER BY parent.lft ASC SEPARATOR '|') 
FROM nested_category AS node
     CROSS JOIN nested_category AS parent 
WHERE 
  node.lft BETWEEN parent.lft AND parent.rgt 
GROUP by node.id 
ORDER BY node.lft;
Run Code Online (Sandbox Code Playgroud)

这将输出树中每个节点的路径.

注意nested_category AS node CROSS JOIN nested_category AS parent相当于nested_category AS node, nested_category AS parent.

这个用途指定字符串'|'作为分隔符,如果你想将它分解为一个路径元素数组,你知道有一个字符串不在你的数据中,你可以指定它.


Mar*_*c B 0

即使mysql端的数据结构有些奇特,仍然可以使用正常的查询方法检索数据。发出适当的 select 语句,循环结果,并将其填充到 PHP 数组中。虽然我不知道你为什么想要这样做,因为在 PHP 中执行集合操作比在 MySQL 中困难得多。