我真的很感激我的问题有一些帮助:
我有2个MySQL表,类别和帖子,如此布局(简化):
类别:
CATID - name - 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";
问题再一次是,如何获得每个类别的总和,包括每个相关子类别的总计?
无法将数据库重组为嵌套集格式,因为我正在维护现有系统。
感谢您的帮助!
答案 0 :(得分:3)
如果类别没有无限嵌套,您可以一次加入一个级别。以下是最多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
答案 1 :(得分:-2)