php - 如何获取某个类别及其子类别(以及子子类别)中所有产品的数量?

标签 php mysql hierarchical-data

类别表如下所示:

id -- name -- parent_id
1  -- Men    -- 0
2  -- Women  -- 0
3  -- Shirts -- 1
4  -- Half-sleeve -- 3
5  -- Full-sleeve -- 3

关系表:

Product_id -- Category Id
1          -- 2
2          -- 2
3          -- 4 ....

我可以轻松检索任何一个类别及其直接子类别中的产品数量。但如果超过 2 个级别,事情就会变得困惑。

所以我的问题是如何获取男士及其子类别中所有产品的数量。或者衬衫及其子类别?

任何想法,谢谢。

更新:

我知道有嵌套集模型,但我现在无法将结构更改为该模型。

最佳答案

如果可能的话我会查看Managing Hierarchical Data in MySQL .

一开始很难让你头脑清醒,但它会让这样的任务变得更容易。

如果你不能做到这一点,你将不得不执行递归函数,例如:

$prods = 0;
function getProdsInCat($cat)
{
    global $prods;

    $prods += mysql_result(mysql_query(SELECT COUNT(`Product_id`) FROM `prod_to_cat` WHERE `Category Id` = '".$cat."'),0);


    $moreCats = mysql_query("SELECT `cat_id` FROM `cats` WHERE `parent_id` = '".$cat."'");
    while($cats = mysql_fetch_assoc($moreCats)
    {
        getProdsInCat($cats['cat_id']);
    }
}

关于php - 如何获取某个类别及其子类别(以及子子类别)中所有产品的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576952/

相关文章:

sql - oracle中列的层次总和

hierarchical-data - EF4 CTP5 自引用分层实体映射

php - style.css 不影响新页面模板

php - IN 子句的 Laravel 原始查询参数

php - 与 pdo 文件的连接失败

只有 1 个值的 MySQL 数据类型?

php - 推进 ORM : PDOException "Can' t create more than max_prepared_stmt_count statements"

php - mysql 表名区分大小写

php - 循环通过 GET、POST 和 COOKIE 进行清理?

mysql - 通过同一表中特定行的分层数据(行 = opengeodb 中的位置)