【发布时间】:2011-06-01 19:44:55
【问题描述】:
我一直在试图弄清楚我做错了什么,让我先解释一下我的 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
但两者都不符合特定标准。
感谢所有帮助! :)
【问题讨论】:
标签: php sql mysql count aggregate-functions