我正在尝试创建一个 mysql 查询来遍历 modx 文档树以返回:
- 文档 ID 数组
- 顶部“N”文档
每个 modx 文档资源都有一个“父”id 字段,因此我需要为其提供一个子资源 id 和一个整数,该整数表示我想要从中提取 id 的树顶部的资源数量。即如果我喂它;
childid = 22,顶级资源 = 3,我希望结果集是:
----------------------------------------
|top| parents |
----------------------------------------
| 5 | 1,2,5,6,7,8,etc |
----------------------------------------
我开始尝试编写一个程序,但到目前为止还没有太多运气:[即这个例子根本不起作用]
DROP PROCEDURE IF EXISTS getParentArray;
CREATE PROCEDURE getParentArray(childid);
BEGIN
DECLARE parent INT UNSIGNED DEFAULT 0;
WHILE parent != 0 DO
SELECT `parent` AS `parentid`
FROM `modx_site_content` WHERE `id` = childid;
SET parent = parentid;
# somehow create a list of parents here?
END WHILE;
END
CALL getParentArray(7055);
解决这个问题的最佳方法是什么?我是否走在正确的轨道上?
最佳答案
由于 MySQL 并不真正支持数组,因此最好的选择是:
(1) 字符串连接形成 csv 字符串,或
(2) 在存储过程中创建一个临时表,插入您的结果,然后在过程末尾select *
临时表以使其作为结果集返回。 (不要忘记在选择后删除临时表,您永远不知道 future 可以调用它的客户端可能会保持其连接事件状态多长时间。)
关于mysql - 如何创建递归 mysql 查询以返回文档层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30602352/