数据库
首页 > 数据库> > mysql-计算属于一个类别及其子类别的所有帖子

mysql-计算属于一个类别及其子类别的所有帖子

作者:互联网

我非常感谢您为我的问题提供的一些帮助:

我有2个MySQL表,类别和帖子,它们的布局(简化)如下:

类别:

CATID-名称-parent_id

帖子:

PID-名称-类别

我想做的是获取每个类别的帖子总数,包括子类别中的所有帖子.

现在,我通过执行以下操作来获取每个(顶级)类别(而不是子类别)中的帖子总数:

"SELECT c.*, COUNT(p.PID) as postCount 
        FROM categories AS c LEFT JOIN posts AS p 
        ON (c.CATID = p.category) 
        WHERE c.parent='0' GROUP BY c.CATID ORDER BY c.name ASC"; 

再次的问题是,如何获得每个类别的总计,包括每个相关子类别的总计?

由于我正在维护现有系统,因此无法将数据库重组为嵌套集格式.

谢谢你的帮助!

解决方法:

如果类别不是无限嵌套的,则可以一次将它们加入一个级别.以下是最多3个嵌套级别的示例:

SELECT c.name, COUNT(DISTINCT p.PID) as postCount 
FROM categories AS c 
LEFT JOIN categories AS c2
    ON c2.parent = c.catid
LEFT JOIN categories AS c3
    ON c3.parent = c2.catid
LEFT JOIN posts AS p 
    ON c.CATID = p.category
    OR c2.CATID = p.category
    OR c3.CATID = p.category
WHERE c.parent = '0' 
GROUP BY c.CATID, c.name
ORDER BY c.name ASC

标签:sql,mysql,count,hierarchical-data
来源: https://codeday.me/bug/20191009/1877888.html