【发布时间】:2012-04-01 06:45:34
【问题描述】:
所以我在一个有很多多对多数据库关系的网站上工作,因为我对查询关系数据库还是有点陌生,所以我有点挣扎。所以我有几个表,我试图从中获取相关数据。我不打算进入整个数据库,因为它非常大,我试图获取所有特定用户帖子的 cmets 数量以及该帖子的喜欢数量,以及我的方式关于它使用的是这样的 LEFT JOIN
SELECT Post.idPosts, Post.Title, Post.Date_poste,
COUNT(Post_has_Comments.Post_idPost),
COUNT(Post_has_Likes.Post_idStories)
FROM Post
LEFT JOIN Post_has_Comments ON Post.idPost = S
Post_has_Comments.Post_idStories
LEFT JOIN Post_has_Likes ON Post.idPost = Post_has_Likes.Post_idStories
WHERE Post.idUsers = 1
但是我遇到的问题是,如果没有 cmets 或没有喜欢,这将返回错误,此外,如果有喜欢或评论,它将返回两个字段中的最高数字,例如,如果有一个帖子上有 3 个 cmets,而 1 个喜欢它也会在 like 字段中返回 3 个,因为我猜它正在计算它返回的行数。所以我的问题是我如何真正获得喜欢和 cmets 的真实数量并放入该字段,如果没有,则返回 0 而不是错误?
【问题讨论】:
-
您使用的是 GROUP BY 子句吗?通常,您希望将 GROUP BY 与 COUNT() 等任何聚合一起使用。