PHP MySQL自定义博客,列出类别

PHP MySQL自定义博客,列出类别,php,mysql,Php,Mysql,我正在用PHP设计一个自定义博客。在我的面板上,我的标题是“类别”,我列出了类别以及每个类别中有多少个帖子。有两个相关的表、帖子和帖子类别 帖子-帖子id、帖子标题、帖子、, 类别识别码 发布类别-类别id, 类别名称、职位id 我不希望添加未分类的类别,因为这将导致我计划设计的未来功能出现问题。我对此的SQL是: SELECT *, COUNT(*) AS category_post_count FROM post_categories, posts WHERE posts.category_

我正在用PHP设计一个自定义博客。在我的面板上,我的标题是“类别”,我列出了类别以及每个类别中有多少个帖子。有两个相关的表、帖子和帖子类别

帖子-帖子id、帖子标题、帖子、, 类别识别码

发布类别-类别id, 类别名称、职位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语句中的这些分组为未分类


谢谢。

你可以做一个左连接,也可以包含任何没有类别的帖子

SELECT *, COUNT(*) as category_post_count
FROM post_categories LEFT JOIN posts
  ON posts.category_id = post_categories.category_id
GROUP BY category_name;

表post_类别中“post_id”的需要是什么?这是否意味着每一篇文章都会有新的分类id?这没有道理。职位类别应为1:n。你有1:1,这可能不是博客应用程序的最佳方式。不知道如何让你的查询准确地为你工作,但我可以提供一些其他信息。我知道您不想为未分类的对象创建行,但为什么?是因为你不想让它出现在你网站的其他区域吗?如果是这种情况,请更改SQl以不返回类别id为0的结果。如果有一行未分类是绝对不允许的,那么你可以做两个查询,一个返回你的帖子,另一个返回你的分类表,然后使用PHP进行计算,如果其中一个帖子的分类id为0,那么就给它未分类的分类。太好了,谢谢。如果它们没有类别名称,我将如何从结果中调用它们?对于没有类别的帖子,来自post_类别的category_id、category_name和post_id字段都将为空,因此在PHP中,您只需检查
$row['category_name']==NULL
。感谢您迄今为止的帮助。我刚刚给了SQL一个测试,它似乎没有返回任何null值,即使在PhpMyAdmin?中执行时也是如此。它似乎使用右连接,而不是左连接。谢谢你的帮助。