我非常感谢对我的问题的帮助:
我有 2 个 MySQL 表、类别和帖子,布局(简化)如下:
类别:
CATID - 名称 - Parent_id
posts:
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";
问题再次是,如何获得每个类别的总和,包括每个相关子类别的总数?
将数据库重组为嵌套集格式是不可能的,因为我正在维护现有系统。
感谢您的帮助!
如果类别不是无限嵌套的,您可以一次 JOIN 一层。以下是最多 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)