环境: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