나는 다음 키 필드가있는 테이블이 : commentid
, comment
, time
, parentid
MySQL의 쿼리 ORDERBY의 GROUPBY,
발언은 두 가지 유형, regular
및 replies
의이다. 보통은 상위 0을가집니다. 답장에는 응답하는 주석과 동일한 모체가 있습니다.
나는 이것들을 group by와 orderby로 알아 냈다고 생각했지만 나의 생각은 효과가 없었고 SQL에 대한 나의 지식이 초보적이기 때문에 고민 중이다.
같은 상위 항목이 함께 그룹화 된 하위 항목과 상위 항목 내에서 시간순으로 정렬되도록하려는 경우를 제외하고는 시간 DESC까지 표시하려고합니다. 나는 오직 한 수준의 대답만을 허용하고있다.
예를 들어, 나는 순서에 따라 싶습니다
time3 commentid3 parentid0
time2 commentid2 parentid0
parentid2 commentid4 time4 (this one is a reply)
parentid2 commentid5 time5 (this one also reply)
time1 comment1 parentid0
나는
SELECT * from comments GROUP BY parentid ORDER BY TIME DESC
을 시도하지만이 작동하지 않았다. 필요한 경우 다른 열을 추가 할 수 있습니다. 모든 제안을 부탁드립니다! 고마워.
스레드는 어떻게 설정 되나요? commentid와 같은가요? 올바르게 이해하면 원래 스레드가 출력됩니다. 나는 disqus를 에뮬레이트하려고 노력 중입니다. 코멘트는 시간이 갈수록 짧아 지지만 답장은 답글에 들려 쓰게됩니다. 들여 쓰기는 형식 지정 문제 일 뿐이므로 각각의 부모 설명 아래에 답장이 있어야합니다. – user1260310
스레드가 그 단어에 가장 적합한 단어가 아니지만 select 절에있는 경우 조건부로 설정됩니다. 따라서 parent_id가 null 인 경우 스레드 id에 대해 commentid를 사용합니다. 이는 모든 주석을 함께 정렬하고 그룹화하기위한 것입니다. – Gohn67
명확히하기 위해 Thread는 실제 열이 아니며 if 함수의 별칭 일뿐입니다. 우리는 스레드가 가장 오래된 순서에서 가장 새로운 순서로 입력된다고 가정하고 그룹화 된 주석 각각을 시간 열로 정렬하기 때문에 스레드로 여기에 속임수를 쓰고 있습니다. – Gohn67