【问题标题】:How to return count values of 0 when finding the number of rows that satisfy a condition查找满足条件的行数时如何返回计数值为0
【发布时间】:2016-12-06 15:35:07
【问题描述】:
$query = mysqli_query($conn, "SELECT BLOGGER_URL, COUNT(*) as NUM FROM Blog_Posts    GROUP BY URL ORDER BY NUM DESC");

我正在使用此查询返回根据博主发表的帖子数量排序的数据行。每个帖子都有一个归属于它的博主 url,所以我正在计算博主 url 的数量来确定计数。 我正在尝试根据博主发布的帖子数量对一些行进行排序,但现在查询仅返回计数为 1 或更多的值。所以没有帖子的博主不会被退回。

如何编辑查询以按顺序返回所有博主?

谢谢,总的来说,我对数据库很陌生。

编辑:

我在这里有两个相关的表:一个带有主键 blogger url 的 bloggers 表和一个使用 blogger url 作为 FK 的 blog posts 表。博客文章引用了 bloggers 表中的给定博客

【问题讨论】:

标签: mysql


【解决方案1】:

您应该将查询加入到 users 表中,以便获得所有用户的计数,而不仅仅是那些有帖子的用户。我不知道你的表结构,但你可以通过以下基本方式进行。

SELECT Blog_Users.userid, COUNT(Blog_Posts.*) as NUM 
FROM Blog_Users
LEFT OUTER JOIN Blog_Posts ON Blog_Posts.BLOGGER_USERID= Blog_Users.userid
GROUP BY Blog_Users.userid ORDER BY NUM DESC

【讨论】:

  • 有道理,试试看
  • 今天早上刚试过-谢谢,我自己永远不会得到这个
【解决方案2】:

计数为 1 或更多是正常的,因为未发布的 Bloggers 在 Blog_Post 表中不存在,因此如果您希望它们返回,只需在查询中使用左连接加入您的 Bloggers 表即可。

希望对你有所帮助

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多