我基本上是在尝试制作一个类别列表,其中包含一组类别及其子类别。
我当前的查询是:
SELECT category.lc_name AS name,COUNT(listings.ls_cat_id) AS post_count
FROM listings_categories AS category
LEFT JOIN listings ON listings.ls_cat_id = category.lc_id
GROUP BY category.lc_id ORDER BY name ASC
它工作得很好,但我希望将子类别项目或帖子计数添加到其父类别。
例如:
id | category | parent | Count
1 Auto 0 3
2 Auto A 1 1
3 Auto B 1 1
4 Auto C 1 1
我可以在 mysql 中只使用一个查询来做什么?
表结构
listings - ls_id,ls_cat_id,ls_title
listings_categories - lc_id,lc_parent,lc_name
最佳答案
好吧,我在这里做了一些假设,这些假设可能是正确的也可能不是正确的并且取决于您的架构和数据,但是这样的事情应该有效:
select numListings, lc_name from
(
SELECT
IF(lc_parent = 0, lc_id, lc_parent) AS lc_parent_id, COUNT(ls_id) as numListings
FROM listings_categories
LEFT JOIN listings ON listings.ls_cat_id = listings_categories.lc_id
group by lc_parent_id
) catList
inner join listings_categories on catList.lc_parent_id = listings_categories.lc_id;
假设:
- 如果类别没有父类别,则 lc_parent 列值为 0
- 只有 2 级类别 - 即。 parent 和 child ,没有孙子
- 您只想显示父类别的结果
如果这些假设中的任何一个不正确,请告诉我,我可以调整查询。
关于php - 如何获得父子类别的项目计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884277/