반응형
두 개의 테이블이 있는데 하나는 뉴스 용이고 다른 하나는 댓글 용이며 상태가 승인 됨으로 설정된 댓글 수를 가져오고 싶습니다.
SELECT
ccc_news . *,
count(if(ccc_news_comments.id = 'approved', ccc_news_comments.id, 0)) AS comments
FROM
ccc_news
LEFT JOIN
ccc_news_comments
ON ccc_news_comments.news_id = ccc_news.news_id
WHERE
`ccc_news`.`category` = 'news_layer2'
AND `ccc_news`.`status` = 'Active'
GROUP BY
ccc_news.news_id
ORDER BY
ccc_news.set_order ASC
LIMIT 20
그러나이 쿼리의 문제점은 해당 뉴스에 해당하는 댓글이 있는지 여부에 관계없이 댓글 열에 대해 가져 오는 최소값이 1이라는 것입니다.
어떤 도움이라도 대단히 감사하겠습니다.
해결 방법
count ()
대신 sum ()
사용
아래에서 시도하십시오.
SELECT
ccc_news . * ,
SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments
FROM
ccc_news
LEFT JOIN
ccc_news_comments
ON
ccc_news_comments.news_id = ccc_news.news_id
WHERE
`ccc_news`.`category` = 'news_layer2'
AND `ccc_news`.`status` = 'Active'
GROUP BY
ccc_news.news_id
ORDER BY
ccc_news.set_order ASC
LIMIT 20
참조 페이지 https://stackoverflow.com/questions/9798937
반응형
'MySql' 카테고리의 다른 글
MySQL JOIN과 LEFT JOIN의 차이점 (0) | 2020.09.17 |
---|---|
MySQL 스레드가 손실 된 경우 테이블 잠금 해제 (0) | 2020.09.17 |
MySQL mysql 저장 프로 시저에 대한 기본 매개 변수를 가질 수 있습니까? (0) | 2020.09.17 |
MySQL mysql 임의의 정수 범위를 얻는 방법은 무엇입니까? (0) | 2020.09.17 |
MySQL 로그를 시작하고 확인하려면 어떻게해야합니까? (0) | 2020.09.17 |
댓글