我一直在想弄清楚我做错了什么,在我直接回答问题之前,让我稍微解释一下我的 MySQL 结构(以便您更好地理解)。
我有一个简单的 PHP 论坛,我在两个表(用于帖子和主题)中都有一个名为“已删除”的列,如果它等于 0,则表示它显示(被认为未删除/存在),或者如果它等于 1,则它隐藏(被认为已删除/不存在)- bool/lean。
现在,我正在讨论的“特定标准”...我想使用其 ID (forum_id) 获取特定论坛中的帖子总数,确保它只计算未删除的帖子(已删除= 0) 并且它们的父主题也没有被删除 (deleted = 0)。
列/表名称是不言自明的(如果需要,请参阅下面我为它们所做的努力)。
我尝试了以下方法(使用“简单”JOIN):
SELECT COUNT(t1.post_id)
FROM forum_posts AS t1, forum_topics AS t2
WHERE t1.forum_id = '{$forum_id}'
AND t1.deleted = 0
AND t1.topic_id = t2.topic_id
AND t2.deleted = 0
LIMIT 1
我也试过这个(使用子查询):
SELECT COUNT(t1.post_id)
FROM forum_posts AS t1
WHERE t1.forum_id = '{$forum_id}'
AND t1.deleted = 0
AND (SELECT deleted
FROM forum_topics
WHERE topic_id = t1.topic_id) = 0
LIMIT 1
但两者都不符合特定标准。
感谢所有帮助! :)
最佳答案
SELECT
COUNT(*) AS total
FROM
forum_topics
JOIN
forum_posts ON topic_id
WHERE
forum_topics.deleted = 0
AND forum_posts.deleted = 0
AND forum_posts.forum_id = '{$forum_id}'
这将使用 topic_id 连接两个表,并且只返回满足两个表的标准的结果 having deleted = 0 和所需的论坛 id。
关于php - 特定条件下的 MySQL COUNT() 总帖子数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567272/