环境:postgresql-8.4
我正在尝试构建类别树。基本上我期待最终输出,例如:
分类名称 类别路径 叶类例如:
数码相机 电子产品 ::: 数码相机 真的
表结构为
创建表类别( id 序列主键, 分类号 bigint, categoryparentid bigint, 类别名称文本, 状态整数 DEFAULT 0, 朗文字, eysiteid 文本, 国家文本, 温文尔雅的文字, 叶类别布尔值 );
到目前为止,我已经得到了这个,但没有工作。任何帮助将不胜感激:
WITH RECURSIVE 树(CategoryID、CategoryParentID、CategoryName、category_tree、depth) 作为 ( 选择 类别ID, 类别父 ID, 分类名称, 类别名称 AS 类别树, 0 AS 深度 从类别 其中 CategoryParentID 为 NULL 联合所有 选择 c.CategoryID, c.CategoryParentID, c.类别名称, 树.category_tree || '/' || c.CategoryName AS category_tree, depth+1 AS 深度 从树 加入类别 c ON (tree.category_tree = c.CategoryParentID) ) SELECT * FROM tree ORDER BY category_tree;
来自数据库的样本
cat=> 从类别中选择 *; 编号 | 类别ID | 类别父ID | 类别名称 | 状态 | 朗 | eysiteid | 国家 | 胆小| 叶类 --------+------------+------------------+------------ ----------+--------+------+------------ -+---------+--------+-------------- 1 | -1 | 0 | 根 | 1 | zh | 0 | 我们 | | F 2 | 20081 | -1 | 古董 | 1 | zh | 0 | 我们 | | F 17 | 第1217章 20081 | 原语 | 0 | zh | 0 | 我们 | | 吨 23 | 22608 | 20081 | 复制古董 | 0 | zh | 0 | 我们 | | 吨 24 | 12 | 20081 | 其他 | 0 | zh | 0 | 我们 | | 吨 25 | 550 | -1 | 艺术 | 1 | zh | 0 | 我们 | | F 29 | 2984 | -1 | 宝贝 | 1 | zh | 0 | 我们 | | F