PHP select 类别和计数

PHP select categories and count number

Table 类别:

id, name,    
-------------
1   category1
2   category2
3   category3
4   category4

Table 个帖子:

id, category, title
--------------------
1   1, 3      title1
2   4, 2      title2
3   1, 4      title3

我想在这个类别中有一个展示类别和计数器帖子。在table个帖子的类别栏中,我是类别ID,用','分隔。当 category = category ID 并显示带有最少 SQL 个查询的计数器时,如何执行此操作。

您应该修正您的数据结构,使每个 post 和类别各占一行。出于多种原因,逗号分隔列表 不是 一种类似 SQL 的数据存储方式。您应该将其更改为连接点 table.

原因如下:

  • 数字应存储为数字而不是字符串。
  • 应该正确定义外键关系,不能用字符串到数字来定义。
  • 一个属性应该包含一个值。
  • MySQL对字符串处理函数没有很好的支持。
  • 无法使用索引优化使用列的查询。

您应该有一个名为 PostCategories 的 table 来获取此信息。

有时,我们会被其他人糟糕的设计决策所困。如果是这样,您可以使用如下查询:

select c.id, count(*)
from posts p join
     categories c
     on find_in_set(c.id, replace(p.category)) > 0
group by c.id;