백고등어 개발 블로그
계층형 테이블 구조 및 쿼리 본문
728x90
칼럼 구성
- Id: 댓글 인덱스는 게시글 번호와 상관없이 댓글 혹은 대댓글이 작성되면 auto_increment 로 1씩 증가되어 저장됩니다.(PK)
- Title: 댓글의 제목을 담을 칼럼입니다.
- Ref: 대댓글의 그룹번호(부모의 Id를 따라가며, Null 또는 1을 기본값으로 설정한다)
- 마지막 Ref 값 + 1 값으로 설정한다
- Step: 들여쓰기의 Level
- depth 와 같으며, 부모 depth + 1 값을 가진다
- ex) 부모
- RefOrder: 같은 그룹내에서의 순서
- 기본값은 0으로 설정하며, 대댓글은 부모의 RefOrder + 1 값을 가진다
- AnswerNum: 대댓글의 개수(부모가 가지고 있는 전체 대댓글의 개수)
- 손자글까지의 개수가 아닌 바로 아래의 자식글 개수만 해당
- ParentNum: 대댓글에서 가지게될 부모의 Id
- ex) id: 1 에 대댓글을 작성하면 해당 대댓글은 ParentNum 으로 1 값을 가진다
대댓글 정렬 쿼리
위와같은 구조의 테이블이 있을 때, 계층형으로 정렬하기 위한 쿼리는 아래와 같다
SELECT * FROM 테이블명 ORDER BY ref, refOrder
정렬의 순서는 우선 ref 칼럼을 기준으로 정렬 후, refOrder 기준으로 한 번 더 정렬하게 된다
참고
728x90