Ad (Id, AgentId, AdDesc, AdTitle, EmailId, ADate), AdComment (ComId, 이메일, 댓글, AdId) 및 MyLikes (LikeId, 이메일, AdId). 여기서는 세 개의 표를 합치고 모든 광고 ID (Ad.Id = AdComment.AdId) 및 모든 광고 ID에 대해 주어진 이메일을 기반으로 한 MyLikes의 좋아요 수에 기초하여 Ad 테이블의 모든 필드와 함께 AdComment 테이블의 주석 수를 표시해야합니다 (Ad.Id = MyLikes.AdId). 그룹화하여 3 개의 테이블을 합산하여 계산합니다.
난 그냥 광고에 참여 및 광고 댓글이 내가 사용하는 경우 -SELECT * , (
SELECT COUNT(c.AdId)
) AS ComCount
FROM Ad a
LEFT JOIN AdComment c ON a.Id = c.AdId
GROUP BY a.Id
ORDER BY a.Id DESC
이 잘 작동된다. 나는 광고 및 MyLikes에 가입 할 때
또한 내가 사용 -이 제대로 작동
SELECT a.Id, (
SELECT COUNT(*)
FROM MyLikes m
WHERE (
m.email = '[email protected]'
AND m.AdId = a.Id
)
) AS MyCount
FROM Ad a
LEFT JOIN MyLikes m ON a.Id = m.AdId
GROUP BY a.Id
.
하지만 3 개의 테이블 조인을 모두 시도해도 제대로 작동하지 않을 경우 잘못된 코멘트 값이 표시됩니다. 이를 위해 나는 내가이 세 테이블을 조인하고 원하는 결과를 얻을 수있는 방법
SELECT a.Id,a.AgentId,a.EmailId,a.AdTitle,a.AdDesc, (
SELECT COUNT(m.AdId)
FROM MyLikes m
WHERE (
m.email = '[email protected]'
AND m.AdId = a.Id
)
) AS MyCount,(
SELECT COUNT(c.AdId)
) AS ComCount
FROM Ad a
LEFT JOIN MyLikes m ON a.Id = m.AdId LEFT JOIN AdComment c ON a.Id = c.AdId
GROUP BY a.Id ORDER BY a.Id DESC
을 used-.
샘플 데이터와 원하는 결과를 제공하십시오. –