我在mysql中加入三个表时遇到问题。
可以说,我们有一个表posts,其中保存了我的条目,有一个表likes,其中存储了user_id和post_id,还有第三个表comments,其中存储了user_id和post_id,以及注释文本。
posts
likes
comments
我需要一个查询来获取我的条目列表,以及每个条目的喜欢和评论数。
我正在使用此查询:
SELECT posts.id, count(comments.id) as total_comments, count(likes.id) as total_likes FROM `posts` LEFT OUTER JOIN comments ON comments.post_id = posts.id LEFT OUTER JOIN likes ON likes.post_id = posts.id GROUP BY posts.id
但是此查询存在问题,如果某项的注释为空,则“喜欢”计数就可以了,但是如果某条条目具有2条注释和4个“喜欢”,则total_comments和total_likes均为“ 8”,这意味着mysql乘以他们。我很困惑,我不知道该怎么办。
谢谢你的放心。
如果这些ID是唯一的,请使用count(distinct comments.id)和count(distinct likes.id)。
count(distinct comments.id)
count(distinct likes.id)