문제는 다음과 같습니다. 일부 사용자는 댓글을 가지고 있지만 좋아하지 않으며, 다른 사용자는 좋아하지만 댓글이없고, 일부 사용자는 댓글이없고, 일부 사용자는 댓글이없고 일부 사용자는 없음을가집니다. 그러므로 나는 통합 쿼리를 사용하는 것이 좋습니다 당신은 당신이 또한 좋아하는 카운트 가입 왼쪽 수있는 별도의 사용자 테이블이있는 경우 다시
SELECT
u.name, u.id, u.profile_picture,
SUM(u.like_count) AS like_count, SUM(u.comment_count) AS comment_count
FROM (
SELECT
liker_name AS name, liker_id AS id, profile_picture,
COUNT(*) AS like_count, 0 AS comment_count
FROM
likes
GROUP BY
liker_name, liker_id, profile_picture
UNION ALL
SELECT
commenter_name AS name, commenter_id AS id, profile_picture,
0 AS like_count, COUNT(*) AS comment_count
FROM
comments
GROUP BY
commenter_name, commenter_id, profile_picture
) AS u
GROUP BY
u.name, u.id, u.profile_picture
을 하나를 합산하고 코멘트 사용자 테이블
SELECT
u.name, u.id, u.profile_picture, l.cnt AS like_count, c.cnt AS comment_count
FROM
users u
LEFT JOIN
(SELECT liker_id, COUNT(*) AS cnt
FROM likes
GROUP BY liker_id
) AS l
ON u.user_id = l.liker_id
LEFT JOIN
(SELECT commenter_id, COUNT(*) AS cnt
FROM comments
GROUP BY commenter_id
) AS c
ON u.user_id = c.commenter_id
WHERE l.cnt > 0 OR c.cnt > 0
에 하위 쿼리를 계산 아무리 당신이 그것을 만들든지, 당신은 별도의 하위 쿼리에서 의견과 좋아 하는를 계산해야합니다. 합류 한 후 계산하면 레코드가 중복 될 수있는 결과 (왼쪽에있는 것)가 합산되어 잘못된 계산을하고있는 것입니다.