mysql - MySQL中的hierarchy查询问题,不返回路径
问题描述
我试图从桌子上的项目列表中创建一个hierarchy。该表如下所示。
item_id | 项目名 | 父亲身份 |
---|---|---|
1 | 主要的 | 0 |
2 | 子 1 | 1 |
3 | 子 2 | 1 |
我想使用 MySQL 获取完整路径 (SYS_CONNECT_BY_PATH),例如项目 2 的 Main/Sub-1 和 item3 的 Main/Sub-2 等等。所以我尝试了以下步骤。
- 创建了一个过程:
DELIMITER $$
CREATE PROCEDURE getpath(IN cat_id INT, OUT path TEXT)
BEGIN
DECLARE catname VARCHAR(2000);
DECLARE temppath TEXT;
DECLARE tempparent INT;
SET max_sp_recursion_depth = 255;
SELECT item_name, father_id FROM boats WHERE item_id=cat_id INTO catname, tempparent;
IF tempparent IS NULL
THEN
SET path = catname;
ELSE
CALL getpath(tempparent, temppath);
SET path = CONCAT(temppath, '/', catname);
END IF;
END$$
DELIMITER ;
- 创建了一个函数:
DROP FUNCTION IF EXISTS getpath;
DELIMITER $$
CREATE FUNCTION getpath(item_id INT) RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE res TEXT;
CALL getpath(item_id, res);
RETURN res;
END$$
DELIMITER ;
- 创建了一个查询:
SELECT item_id, item_name, getpath(item_id) AS path FROM my_table;
预期结果:
item_id | 项目名 | 小路 |
---|---|---|
1 | 主要的 | 主要的 |
2 | 子 1 | 主/副1 |
3 | 子 2 | 主要/次要 2 |
实际结果:
item_id | 项目名 | 小路 |
---|---|---|
1 | 主要的 | 无效的 |
2 | 子 1 | 无效的 |
3 | 子 2 | 无效的 |
任何帮助,将不胜感激。
解决方案
推荐阅读
- vb.net - 将 datagridview 值传递给带有 vb.net 格式的消息框
- javascript - 点击功能无法与 codeigniter anchor() 一起正常工作
- react-native - 将图像从 React Native 上传到 LoopBack
- java - Eclipse - 提取具有相似变量名的常量时的错误建议
- machine-learning - 为什么我不能直接使用特征矩阵进行预测?
- mongodb - mongodb中单个查询的多个计数
- python - 读取字符串等列表的大文件并转换为列表
- c# - 如何从方法中返回转换或游戏对象列表而不为新游戏对象创建实例?
- generics - Kotlin - 如何生成无法具体化的递归函数?
- php - Laravel 5.4中表之间的多重关系