CONNECT BY 사용안하고 재귀호출로 구현할 수 있을까요? 0 4 2,784

by BCPMAN [2015.03.02 11:36:42]


조회 테이블 구조
부모ID 자식ID
0009 0001
0008 0002
0008 0003
0003 0004
0002 0005
0002 0006
0001 0007
0004 0008
0005 0009
1) 최초 파라미터 부모ID값으로 조회하여 자식ID 를 가져옵니다.
2) 자식ID로 부모ID필드를 조회하여 자식ID를 가져옵니다.
 
1),2)를 부모ID에 해당하는 자식ID가 없을때까지 반복하여 자식ID를 배열에 저장합니다.
 
db는 오라클이며 connect by를 사용안하고 구현하려고 하는데 잘안되네요..
 
혹시 이런경우 프로시저 재귀호출로 가능하려나요??
 
select함수에서 일단 처음 최초 가져온 리스트를 가지고 for문 돌리며 다시 함수를 호출하는 구조? 로 
하면 될것같은데.. 음 감이 안오네요..-0-ㅜ
by jkson [2015.03.02 11:53:36]

CONNECT BY 를 왜 안 쓰시려고 하는 거죠?


by BCPMAN [2015.03.02 13:09:14]

아.. 오라클에 종속적이지 않게 하려구요.. 개발중인데 mysql이나 mssql버전으로도 구현해야할것같아서요.


by 부쉬맨 [2015.03.02 13:18:09]

connect by 튜닝이 안되서

속도가 안나와서 진행 해본게 있습니다.

 

기본적으로 임시 테이블을 하나 생성하여

테이블구조는

level , 부모아이디

를 가지고 있습니다.

 

level 1로 해서 부모아이디를 입력합니다.

procedure conenctby

i := 1;

begin

for i...20 

대상 테이블 a , 임시테이블 b

where a.자식아이디 = b.부모아이디

   and b.level = i

end for

 

end;

 

형태로 배열로 20번을 돌면서 1,2,3,4,5.... 레벨로 데이터 구조를 만들수 있습니다.

 

 


by 마농 [2015.03.02 13:35:55]

DB 에 종속적이지 않으려면 프로그램으로 해결하는 수 밖에 없습니다.
말씀하신 프로시져 또한 DB 종속적이죠.
DB 에서는 단순 Select 만 해오고,
프로그램 언어 단계에서 재귀적으로 루프를 돌리셔야 할 듯합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입