php - 如何获得父子类别的项目计数?

标签 php mysql codeigniter

我基本上是在尝试制作一个类别列表,其中包含一组类别及其子类别。

我当前的查询是:

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/

相关文章:

codeigniter - 为什么 codeIgniter 会复制并附加 URL?

php - 尝试将托管 Web 应用程序连接到本地数据库?

php - 获取矩阵元素组合的最小总和

php 两个数组之间的数组匹配

php - MySQL 中的 MySQL Transaction+ PHP 问题

php - MySQL错误 "Foreign key constraint is incorrectly formed"

mysql - 复制Mysql数据到远程服务器

MySQL 跨表删除

javascript - 如何在 codeigniter 中使用 ajax 在 View 中显示消息并替换 div?

ajax - 使用 Ajax 动态显示数据