我有一個問題,我以前用其他數據庫管理系統解決,但無法找到解決方案與Sybase-ASE 15.0運行。這可能與SQL(或視圖)沒有自定義StoredProcedures?如何從sybase-ase db創建遞歸路徑?
輸入:
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
我有一個問題,我以前用其他數據庫管理系統解決,但無法找到解決方案與Sybase-ASE 15.0運行。這可能與SQL(或視圖)沒有自定義StoredProcedures?如何從sybase-ase db創建遞歸路徑?
輸入:
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
編輯:這僅僅是由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也使用了+
。
我得到`[錯誤代碼:156,SQL狀態:ZZZZZ]在關鍵字'WITH'附近的語法不正確。「通過我的研究,我發現這應該可以用Sybase Anywhere但不提示到Sybase ASE。 – 2011-02-18 19:58:02
啊,對不起。我剛剛在Sybase在線手冊中發現了這一點。如果遞歸只有一個級別,我沒有意識到ASA和ASE之間存在這樣的區別 – 2011-02-18 20:02:43
發現了一些附加信息的話題[這裏](http://www.codeproject.com/KB/database/HierarchySyBaseMSServer.aspx)(也沒」到目前爲止t幫助我...) – 2011-02-18 20:12:55