php - 如何计算某列与另一个表的列匹配的行数

标签 php mysql sql mysqli

我想显示用户发表的帖子数量,但我有几个不同的表,需要匹配 id 并对其进行计数。

类似这样的事情:

用户表

userid       username      email              regdate

  34          mister      email@some.tld    2013-10-26 12:01:07

帖子表

postid       creator        post_comment      post_title     status

  1            34          This is comment    Post 1         published
  2            12          This is comment    Post 2         published
  3            34          This is comment    Post 3         pending
  4            25          This is comment    Post 4         published
  5            34          This is comment    Post 5         published

现在我已经有了一个查询,可以从用户表中选择有关特定用户的所有数据:

mysqli_query($conn, "SELECT * FROM users WHERE userid = $userid");

$userid 是当前登录用户的 ID。这工作正常:它选择有关该用户的所有相关信息。

但我想显示每个用户发布的帖子数量。我在 w3schools 上读到 SQL COUNT 函数的工作原理如下:

mysqli_query($conn, "SELECT COUNT(creator) AS userposts FROM posts WHERE creator=$userid");

但是,正如您在发布的表示例中看到的,5 篇帖子中,3 篇来自用户 34,其中 3 篇未发布。

我不知道如何进行 SQL 查询来选择 userid 与 $userid 匹配的所有用户,然后从帖子中选择创建者和状态,并计算创建者为 $userid 且状态已发布的帖子数。

这是我最终目标的输出:

用户先生已发布 2 条帖子。

最佳答案

为了仅获取已发布帖子的数量,您应该通过 ANDing status = 'published' 重构条件语句

mysqli_query($conn, "SELECT COUNT(creator) AS num_posts FROM posts 
WHERE creator=$userid AND status = 'published'");

关于php - 如何计算某列与另一个表的列匹配的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19612158/

相关文章:

PHP 的 session 存储

php - 仅验证正整数

MySql错误150,不知道为什么

sql - 多列的 SQL order-by 如何工作?

sql - 表别名如何影响性能?

php - CodeIgniter - ActiveRecord order_by() 应用于所有查询,而不仅仅是我想要的查询

php - mysql 获取学生考试排名

php - 搜索字符串的最佳mysql方法

MySQL集群-分布感知查询和存储过程是否是冲突的想法?

sql - LINQ to SQL C# COALESCE