대댓글 정렬 질문입니다! 0 8 1,966

by mjee [MySQL] [2019.12.24 11:23:46]


2.jpg (67,321Bytes)
1.JPG (15,501Bytes)

안녕하세요!

메리크리스마스입니다!^^

 

mysql에서 1깊이 제한의 대댓글 기능을 만드려고 합니다.

 

첫번쨰 첨부한 이미지모양으로 데이터 구조가 있습니다.

parent_id는 댓글이 달린 글의 id,

parent_reply_id는 0이 아닐경우 해당값의 id를 가진 댓글의 id입니다.

 

이런 모양의 데이터가 있을경우

id기준으로 정렬 (최신것이 위로 오도록 desc),

그 사이사이 대댓글이 들어오도록 (최신것이 아래로오도록 asc) 정렬이 가능할까요?

 

지금모양대로 가능할지 아니면 순서컬럼이라던지 새로 컬럼을 추가해야할지 조언 부탁드리겠습니다.

 

 

<<원하는 모양>>

id

171

170

172

169

 

입니다!

 

by 마농 [2019.12.24 13:58:15]

테이블 구조가 이해가 잘 안가네요?
ID 와 부모ID 2개 항목만 있으면 될 듯 한데? 왜 3개 인지?
부모ID 역할을 하는 항목이 parent_reply_id 인가요?
그럼 parent_id 는 뭐죠? 이게 한글로 바꾸면 부모ID 인데?


by mjee [2019.12.24 14:10:12]

마농님 안녕하세요!
ID는 해당 댓글의 인덱스,
parent_id는 해당 댓글이 있는 게시글의 인덱스,
parent_reply_id는 본 댓글이 대댓글일 경우 부모댓글의 인덱스입니다.

155번 게시글에 169번댓글, 171번 댓글이 있고, 171댓글엔 170번, 172번 대댓글이 있습니다


by 마농 [2019.12.24 14:19:23]

메인글인 155번 글 빼고 댓글과 대댓글만 가지고 질문하신 거네요?
보통 본글은 역순 댓글은 순방향 정렬을 하는데.
이건 댓글은 역순 대댓글은 순방향 정렬을 하네요? 이런 정렬이 필요한지? 이런 경우는 처음 보네요?
질문은 본글을 빼고 질문하셔서 더욱 헷갈리네요?
본글은 정렬 안하나요?
155번 글도 보여주시고, 또한 다른 본글도 함께 하는 예시자료를 보여주세요.


by jkson [2019.12.24 14:46:29]

155번 글에 달린 댓글 조회인데

댓글은 최신 것이 위로 오고 대댓글은 댓글 아래로 오래된 것 순으로 정렬인가보네요.(다음 뉴스 댓글처럼)

mysql이라 쿼리를 못 짜겠네요ㅠoㅠ


by mjee [2019.12.24 14:58:43]

넵 맞습니다 ㅜㅜ 정안되면 테이블구조를 바꾸는걸 생각해봐야할것 같아요


by mjee [2019.12.24 14:57:25]

마농님 말씀하신것 처럼 parent_id컬럼은 안보셔도 되는데 제가 햇갈리게 넣어버렸네요.. 말씀하신대로 댓글과 대댓글의 정렬을 질문드렸습니다.

제가 만드려는 게시판은 일본의2ch같은 스레드플로트형 게시판인데,  등록일과 상관없이 최신 반응(댓글)의 글이 상위에 노출되는 게시판형식입니다.

게시판에 게시글의 정렬처럼 각 게시글의 댓글들도 최신댓글이 항상 상단으로 노출됩니다. 그렇지만 댓글의 대댓글은 등록순으로 순방향 정렬이 되도록 생각하고있습니다.
 

본문에 제가 생각했던 게시판모양을 첨부하겠습니다..

 


by 마농 [2019.12.24 18:06:20]
WITH t AS
(
SELECT 169 id, 155 parent_id, 0 parent_reply_id
UNION ALL SELECT 170, 155, 171
UNION ALL SELECT 171, 155,   0
UNION ALL SELECT 172, 155, 171
)
SELECT *
  FROM t
 WHERE parent_id = 155
 ORDER BY CASE WHEN parent_reply_id = 0 THEN id ELSE parent_reply_id END DESC
        , CASE WHEN parent_reply_id = 0 THEN - id ELSE id END
;

 


by mjee [2019.12.25 14:18:12]

마농님 확인이 늦었습니다 감사합니다!!! 즐거운 크리스마스 되세요!

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