【发布时间】:2012-08-03 19:06:01
【问题描述】:
环境: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【问题讨论】:
-
您有一种奇怪的方式来标记树的根节点(通常,根节点的父指针为 NULL)。查看我的更新。
标签: php postgresql postgresql-8.4 hierarchical-trees hierarchical-query