如何从sybase-ase db创建递归路径?

时间:2011-02-18 14:08:48

标签: sql recursion treeview sybase-ase

我遇到了一个问题,我以前用其他DBMS解决了这个问题,但找不到与Sybase-ASE 15.0一起运行的解决方案。没有自定义StoredProcedures的SQL(或视图)是否可以实现这一点?

输入:

ID Name Parent
1  a
2  b    1
3  c    1
4  d    3

输出:

ID   PATH
1    a
2    a / b
3    a / c
4    a / c / d

2 个答案:

答案 0 :(得分:0)

编辑:仅Sybase SQL Anywhere支持此功能,而不是“专业”Adaptive Server Enterprise支持。

根据手册,Sybase支持递归公用表表达式。

所以以下内容应该有效:

WITH RECURSIVE hierarchy_path (id, node_path) AS 
(
  SELECT id, 
         name as node_path
  FROM the_unknown_table
  WHERE id = 1

  UNION ALL

  SELECT c.id, 
         p.node_path || ' / ' || c.name
  FROM the_unknown_table c
    JOIN hierarchy_path p ON p.id = c.parent_id 
)
SELECT *
FROM path
ORDER BY id

不确定Sybase是否使用标准SQL并置运算符||或其他内容。由于微软忽视了那里的标准,我猜Sybase也使用+

答案 1 :(得分:0)