MySQL 에서는 오라클에서 처럼 Hierarchical query 를 지원하지 않습니다. 그러므로 START WITH (condition) CONNECT BY (condition) 이런 절이 SELECT 구문 내에 존재하지 않습니다. (물론 그러니까 이렇제 질문을 했겠지요)
그럼 이를 만족하는 구문을 MySQL 에서는 만들수 있느냐. 일단 하나의 쿼리로는 불가능합니다. 할 수 없이 프로그램상에서 따로 함수를 만들어 구현하는 수 밖에 없습니다. 즉 start with 절에 나오는 조건문을 가지고 따로 loop 를 돌리는 수 밖에 없을 것 같습니다. 그렇게 구현 알고리듬이 힘들 것 같지는 않지만 생각보다는 제법 코딩을 요할수는 있을 것 같습니다. 물론 위의 생각은 저 개인적으로 방금 즉흥적으로 생각해 본 것입니다. 혹시 더 좋은 생각 있으신분 포스팅 바랍니다.:-)
>>김춘오 님께서 쓰시길<<
:: 현재 기동하는 디비는 오라클입니다.그런데 디비를 MySql로 바꿀려고 하는데
:: 쿼리문 때문에 힘이 드네요..
:: 오라클에서 사용되는 connet by .. start with 구문을
:: MySql용으로 바꿀려고 합니다.
:: 쿼리문은 다음과 같습니다.
::
:: SELECT FOLDER_CD, FOLDER_NM, DEPTH_NO, UP_FOLDER_CD
:: FROM icogfolder
:: WHERE COMPANY = 'icompia'
:: CONNECT BY PRIOR FOLDER_CD = UP_FOLDER_CD
:: START WITH UP_FOLDER_CD = 0
::
:: 테이블 구조는 다음과 같구요..
:: 테이블 명은 icogfolder
:: COMPANY NOT NULL VARCHAR2(10)
:: FOLDER_CD NOT NULL NUMBER(4)
:: FOLDER_NM NOT NULL VARCHAR2(50)
:: DEPTH_NO NOT NULL NUMBER(1)
:: UP_FOLDER_CD NOT NULL NUMBER(4)
::
:: 쿼리 되는 데이타는 아래와 같습니다.
:: FOLDER_CD FOLDER_NM DEPTH_NO UP_FOLDER_CD
:: 2 결재완료 보관함 1 0
:: 6 결재 보류함 2 2
:: 1 공문서결재 1 0
:: 5 일반 결재 2 1
:: 3 테스트 1 0
:: 4 테스트 1 2 3
::
:: 어떻게 바꿔야 할지 영 생각이 안나네요..
:: 제발 좀 도와 주세요..
::
::
|