【发布时间】:2010-11-08 15:16:00
【问题描述】:
我正在用 PHP 设计一个自定义博客。在我的面板上,我有标题“类别”,我列出了类别以及每个类别中有多少帖子。有 2 个相关表,posts 和 post_categories。
POSTS - post_id、post_title、post、 category_id
POST_CATEGORIES - category_id, category_name, post_id
我不希望添加未分类的类别,因为这会给我计划设计的未来功能带来问题。我的 SQL 是:
SELECT *, COUNT(*) AS category_post_count
FROM post_categories, posts
WHERE posts.category_id = post_categories.category_id
GROUP BY category_name
现在,如果一个帖子没有设置 category_id,它的 category_id 为 0,并且不会与 post_categories 中的任何内容相关。如何在我的 SQL 语句中将它们分组为未分类?
谢谢。
【问题讨论】:
-
POST_CATEGORIES 表中的“post_id”需要什么?这是否意味着对于每个 POST,您将拥有新的 category_id ?这没有意义。帖子的类别应该是 1:n 。你有 1:1 这可能不是博客应用程序的最佳方式。
-
不确定如何让您的查询完全适合您,但我可以提供一些其他信息。我知道您不想为未分类的内容创建一行,但为什么呢?是因为您不希望它出现在您网站的其他区域吗?如果是这种情况,那么将您的 SQl 更改为不返回 category_id 为 0 的结果。如果绝对没有未分类的行,那么您可以执行两个查询,一个返回您的帖子,一个返回您的类别表,然后使用 PHP进行数学计算,如果其中一个帖子的类别 id 为 0,则将其设为未分类类别。