본문 바로가기
MySql

MySQL-LEFT JOIN 및 COUNT ()

by 베이스 공부 2020. 10. 29.
반응형

3 개의 테이블이 있습니다.

아이디, 이름, 설명

thread_id, forum_id, user_id, 제목, 콘텐츠,보기

post_id, thread_id, author_id, 콘텐츠, 날짜

내가하고 싶은 것은 포럼의 모든 스레드를 가져오고 모든 스레드의 게시물 수를 얻는 것입니다. 그래서 모든 스레드 (WHERE forum_id = whatever)를 얻은 다음 결과를 계산하기 위해 테이블 ​​게시물과 함께 참여했습니다. 그러나 뭔가가 작동하지 않습니다. 내 질문은 다음과 같습니다.

SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
  FROM
    threads t
  LEFT JOIN
    users u
    ON
       u.id = t.user_id  
  LEFT JOIN
     posts p
     ON
       p.thread_id = t.thread_id
  WHERE
     t.forum_id = $this->forumID

이 쿼리는 게시물이있는 스레드 만 표시합니다. 또한 GROUP BY 문을 사용해 보았지만 MySQL 오류가 발생합니다.

어떻게 해결할 수 있습니까?

----------- 수정 : GROUP BY t.thread_id를 추가하려고 시도했지만 이전에 말했듯이 MySQL 오류 :

SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 15 행의 'WHERE t.forum_id = 2'근처에서 사용할 올바른 구문을 확인하십시오.

전체 쿼리 :

SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
  FROM
    threads t
  LEFT JOIN
    users u
    ON
       u.id = t.user_id  
  LEFT JOIN
     posts p
     ON
       p.thread_id = t.thread_id
  GROUP BY
     t.thread_id
  WHERE
     t.forum_id = $this->forumID

편집 2 :

내 잘못은 GROUP BY 문을 의도하지 않은 곳에 넣었습니다. 이제 해결되었습니다.

 

해결 방법

 

GROUP BY가 올바른 방법이므로 다음을 추가하십시오. GROUP BY t.thread_id

 

참조 페이지 https://stackoverflow.com/questions/4175028

 

 

반응형

댓글