2010-06-08 6 views
3

부모 - 자식 관계가있는 중첩 폴더가 있습니다. 우리는 MySQL MyISAM DB를 사용합니다. 데이터는 다음과 같은 방식으로 DB에 저장됩니다.SQL 쿼리 루트 부모 자식 레코드

하위 폴더가 중첩 구조로 만들어 질 때마다 이전 parentID가 추가됩니다. 아래 표와 같이 계층 구조에 추가 된 폴더의 RootFolderID를 가져 오려고합니다.

FoldID ParentID |RootFolderID 
-----------------|------------------- 
1   0  | 0 
2   1  | 1 
3   2  | 1 
4   3  | 1 
5   4  | 1 

나 루트 folderID를 가져오고 폴더마다 작성 후 RootFolderID 열에서을 채우는 방법을 알려 주시기 바랍니다.

감사합니다.

+0

최소 값으로 FoldID를 가져 와서 * 다른 * FoldID의 모든 RootFolderID로 채우지 않는 이유는 무엇입니까? –

답변

2

부모 폴더의 정보를 알고 있으면 루트 폴더는 부모 폴더의 폴더와 동일합니다. 상위 폴더에 루트 폴더가없는 경우 루트 폴더는 상위 폴더 자체가됩니다.

+0

우리는 100 개의 기본 폴더와 하위 폴더를 가지고 있습니다. 하위 폴더가 생성되면 새로 생성 된 폴더의 RootFolderID를 채워야합니다. –

+0

예, 이해합니다. 새로 생성 된 폴더의 부모 폴더가 무엇인지 알기 때문에 부모 폴더의 루트 폴더를 검색 할 수 있습니다. 0 인 경우 새로 생성 된 폴더의 루트 폴더는 상위 폴더 ID입니다. 0이 아니면 새로 생성 된 폴더의 루트 폴더는 상위 폴더의 루트 폴더와 같습니다. – oedo

+0

예, 새로 생성 된 폴더의 상위 폴더의 루트 폴더를 검색하는 방법을 알고 싶습니다. 루트까지 끝까지 반복 한 다음 id를 가져와야합니다. 나는 그 질문을 알려주지. –