2011-02-18 3 views
1

이전에 다른 DBMS로 해결했지만 Sybase-ASE 15.0에서 실행할 수있는 솔루션을 찾을 수없는 문제가 있습니다. 사용자 지정 StoredProcedures없이 SQL (또는 Views)을 사용하여이 작업을 수행 할 수 있습니까?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)에 몇 가지 추가 정보를 발견 (물론 'didn를 지금까지 많이 도와주세요 ...) –

답변

0
+0

재귀에 단 하나의 레벨 만 있으면 괜찮습니다. 그러나 이것이 더 깊은 레벨 재귀와 함께 어떻게 작동하는지 보지 못합니다. –

+0

커서가있는 경우에만 – kolchanov

+0

이 간단한 대답을 허용했습니다. "작동하지 않습니다." –

0

편집이 만이 아니라 "전문가"Adaptive Server의 기업에 의해, 어느 곳이나 사이베이스 SQL에 의해 지원됩니다.

설명서에 따라 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 연결 연산자 || 또는 다른 무언가를해야합니다 사용하는 경우. Microsoft가 표준을 무시하기 때문에 Sybase는 +도 사용합니다.

+0

'[오류 코드 : 156, SQL 상태 : ZZZZZ] 키워드'WITH '옆에 잘못된 구문이 있습니다.'제 조사에서 Sybase Anywhere에서 가능하지만 힌트가 필요하지 않습니다. Sybase ASE. –

+0

아, 죄송합니다. Sybase 온라인 매뉴얼에서 방금 발견했습니다. ASA와 ASE의 차이가 있다는 것을 깨닫지 못했습니다 –

관련 문제