안녕하세요.
db에 저장된 문서들의 폴더 경로명 찾아내려는건데요
내비게이터 방식으로 해야되는데..
추출된 정보는 처음 폴더정보가 동일하게 반복되네요
다른 폴더 정보를 반복되야되는데..
DECLARE @CURRENT_FOLDER_ID AS INT
DECLARE @TD_FOLDER_ID AS INT
DECLARE @PARENT_FOLDER_ID AS INT
DECLARE @CURRENT_FOLDER_NAME AS VARCHAR(100)
DECLARE @PATH AS VARCHAR(4000)
DECLARE CURSOR1 CURSOR FOR
SELECT
TD_FOLDER_ID
FROM
DOC_FOLDER_INFO
--ORDER BY TD_FOLDER_ID
OPEN CURSOR1
--FETCH NEXT FROM CURSOR1 INTO @TD_FOLDER_ID
FETCH FROM CURSOR1 INTO @TD_FOLDER_ID
--SET @CURRENT_FOLDER_ID = 4000
SET @PATH = ''
SET @CURRENT_FOLDER_ID = @TD_FOLDER_ID
DECLARE @TEMP AS INT
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT
@PARENT_FOLDER_ID = TD_PARENT_FOLDER_ID,
@CURRENT_FOLDER_NAME = TD_FOLDER_NAME
FROM
DOC_FOLDER_INFO
WHERE
TD_FOLDER_ID = @TD_FOLDER_ID
IF @PARENT_FOLDER_ID IS NULL BREAK
SET @PATH = @CURRENT_FOLDER_NAME + ' > ' + @PATH
IF @PARENT_FOLDER_ID = 0 BREAK
SET @TD_FOLDER_ID = @PARENT_FOLDER_ID
FETCH NEXT FROM CURSOR1 INTO @TD_FOLDER_ID
END
SELECT @PATH as FULLpath,
A.td_folder_id,A.TD_FOLDER_NAME,count(a.td_folder_id) as cnt
FROM DOC_FOLDER_INFO A, TECH_DOC B
WHERE A.td_folder_id=B.DOC_FOLDER_UID
--AND A.td_folder_id=@i
group by A.td_folder_id,A.TD_FOLDER_NAME
CLOSE CURSOR1
DEALLOCATE CURSOR1
GO
--잘못된 결과
FULLpath td_folder_id td_folder_NAME CNT
문서폴더1 1000 문서명1 3
문서폴더1 1000 문서명2 3
문서폴더1 1000 문서명3 3
문서폴더2 2000 문서명4 1
문서폴더3 2000 문서명5 2
문서폴더3 2000 문서명6 2
--구현할 결과
FULLpath td_folder_id td_folder_NAME CNT
문서폴더1 1000 문서명1 3
문서폴더1 1000 문서명2 3
문서폴더1 1000 문서명3 3
문서폴더2>문서폴더1 2000 문서명4 1
문서폴더3>문서폴더2>문서폴더1 2000 문서명5 2
문서폴더3>문서폴더2>문서폴더1 2000 문서명6 2
cnt는 문서갯수입니다.
부탁드립니다. |