데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

트리구조 테이블 해체 쿼리

ycstone 2013.06.21 18:24 Views : 5931

CREATE PROCEDURE GET_FIN(@LEVEL INT) AS BEGIN

SET NOCOUNT ON

DECLARE @JITM NVARCHAR(20)   => 자품번 선언

DECLARE @MITM NVARCHAR(20)  => 모품번 선언

SET @LEVEL = 1  => 레벨1에서 시작

CREATE TABLE STR(ITM NVARCHAR(20), LEV INT)  => 작업테이블 생성

DECLARE @FIN TABLE (ITMs NVARCHAR(20), LEVs INT)  => 결과 변수테이블 생성

INSERT INTO STR VALUES  ('A1', 1)  => 읽기 시작할 임의의 최상위 품번 입력

WHILE @LEVEL > 0 BEGIN   => @LEVEL=1을 시작으로 루프, @LEVEL=0이면 루프 종료.

IF EXISTS (SELECT  *  FROM STR WHERE  LEV = @LEVEL) BEGIN

SELECT  @MITM = ITM FROM STR WHERE  LEV = @LEVEL  => 해당 레벨의 모품번을 매개변수로 선언(자품번(하위) 찾기위해). 여러품번이 있을 경우 최하단 한 품번이 매개변수로 대입될 것으로 생각(?)

INSERT  INTO @FIN VALUES (@MITM, @LEVEL)  => 먼저 결과테이블에 모품번을 입력

DELETE FROM STR WHERE ITM = @MITM AND LEV = @LEVEL  => 결과테이블 INSERT 된 특정 품번을 작업테이블에서 삭제함

SELECT  @JITM = JITM FROM BOM WHERE MITM=@MITM  => BOM테이블에서 @MITM에 해당하는 자품번(JITM) @JITM에 대입. 자품번이 여러 개일 경우 최하단 한 개 품번이 대입될 것으로 생각(?)

INSERT INTO STR VALUES (@JITM, @LEVEL + 1)  => 찾은 자품번을 다음 단계의 자품번을 읽기 위해 작업파일에 레벨을 한 단계 높여서 입력

IF @@ROWCOUNT > 0  => 한 행이라도 INSERT가 되었다면 @LEVEL에 한 단계 높여서 계속 루프를 돌리고,   추가가 없다면 하위품번이 없음으로 레벨을 한 단계 낮추어 계속 읽음

  SELECT @LEVEL = @LEVEL + 1  => 행 추가시 레벨을 높이고,

END

ELSE BEGIN

SELECT  @LEVEL = @LEVEL - 1  => 행 추가 없으면 레벨을 낮추고,

END

END  => WHILE 종료

SELECT * FROM @FIN  => 결과 출력

END

-------------------------------------------------------------------------------------------

상기 sql실행시 쿼리 시간초과가 나오는데 어디가 잘못된 걸까요?

BOM 테이블은 모자관계가 기록된 마스터 파일입니다.

자세한  테이블 구조는 첨부파일에 있습니다.

 

 

 

 

No. Subject Author Date Views
6932 DB 컨넥션이 느려지는 경우 [2] 잠수쟁이 2013.06.25 5269
6931 Azure에 mssql 설치시 사전에 고려해야할 사항 문의 [1] js87 2013.06.25 5294
6930 미러링 오류 관련 질문입니다. [1] 무식최고 2013.06.25 5152
6929 같은 서버 다른 인스턴스간 테이블 데이터 복사와 업데이트(중복과 성능 고려포함) [1] 슈팅스타 2013.06.25 8140
6928 데이터 조합하여 경우의수 순차적 감산 데이터 추출 [14] 다초 2013.06.25 5221
6927 DB 테이블 변경 내역을 알수 있는 쿼리가 있을까요? [1] 쿨한너구리 2013.06.25 6333
6926 엔진튜닝관리자 사용시 오류가 납니다. 전념 2013.06.24 5468
6925 행을 열로 보여주기 쿼리 질문이 있습니다.. [2] alima 2013.06.24 5654
6924 Classic ASP에서 SQL에 XML 데이터 혹은 바이너리 파일 저장은 어떻게 하나요? [2] 김우_281841 2013.06.24 7452
6923 모든사원의 최종학력 구하기 [4] q0822kang 2013.06.24 7016
6922 insert시 궁금점.... [4] SQL왕왕초보 2013.06.24 3911
6921 Data Modeling 프로그램 추천이요 [1] 홍훈아 2013.06.24 5675
6920 Full Text Search 에 관한 질문드립니다.. FREETEXT 관련입니다 박대준님 2013.06.23 4152
6919 1045 오류 인데 이건 무슨오류인가요? [1] 류트 2013.06.22 5967
6918 SELECT COL명을 SELECT 해서 줄수 있을까요? [2] 잠수쟁이 2013.06.21 4396
6917 MS SQL 쿼리 질문입니다. (비율에따른금액계산) [4] 움카카카 2013.06.21 11640
» 트리구조 테이블 해체 쿼리 [3] ycstone 2013.06.21 5931
6915 필드에 중복된 데이타를 제거 후 갯수 구하는건데요 [6] 바보 2013.06.21 6294
6914 MSSQL 2008 Standard 메모리 관련 질문 [8] 김동인_278615 2013.06.21 7780
6913 프로시저에서 INTO # 테이블을 만들때 [2] 잠수쟁이 2013.06.21 5401





XE Login