我遇到了一个问题,我以前用其他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
答案 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)