2011-02-18 47 views
1

我有一個問題,我以前用其他數據庫管理系統解決,但無法找到解決方案與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 
+0

發現了一些附加信息的話題[這裏](http://www.codeproject.com/KB/database/HierarchySyBaseMSServer.aspx)(也沒」到目前爲止t幫助我...) – 2011-02-18 20:12:55

回答

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也使用了+

+0

我得到`[錯誤代碼:156,SQL狀態:ZZZZZ]在關鍵字'WITH'附近的語法不正確。「通過我的研究,我發現這應該可以用Sybase Anywhere但不提示到Sybase ASE。 – 2011-02-18 19:58:02

+0

啊,對不起。我剛剛在Sybase在線手冊中發現了這一點。如果遞歸只有一個級別,我沒有意識到ASA和ASE之間存在這樣的區別 – 2011-02-18 20:02:43