Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一次查询中的嵌套集、产品计数和类别深度_Php_Mysql_Sql - Fatal编程技术网

Php 一次查询中的嵌套集、产品计数和类别深度

Php 一次查询中的嵌套集、产品计数和类别深度,php,mysql,sql,Php,Mysql,Sql,按照本文的说明,我想得到一个完整的树,每个类别的深度都很好 我还想得到每个类别的产品数量。我试图添加另一个COUNTproducts\u categories.product\u id,但它把深度值搞乱了。如何修改查询以获得每个类别的产品数量和深度 products_categories ---------------------- category_id product_id SELECT node.name, (COUNT(parent.name) - 1) AS depth FROM

按照本文的说明,我想得到一个完整的树,每个类别的深度都很好

我还想得到每个类别的产品数量。我试图添加另一个COUNTproducts\u categories.product\u id,但它把深度值搞乱了。如何修改查询以获得每个类别的产品数量和深度

products_categories
----------------------
category_id
product_id


SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
    nested_category AS parent
 WHERE node.lft BETWEEN parent.lft AND parent.rgt
 GROUP BY node.name
 ORDER BY node.lft
换句话说,我想结合这两个查询

SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
    nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft

SELECT parent.name, COUNT(product.name)
FROM nested_category AS node ,
    nested_category AS parent,
    product
WHERE node.lft BETWEEN parent.lft AND parent.rgt
    AND node.category_id = product.category_id
GROUP BY parent.name
ORDER BY node.lft;

我终于解决了我的问题。我结合了以上的查询,这样我就可以得到这样的深度和产品数量

SELECT parent.id,
                   parent.lft,
                   parent.rgt,
                   (SELECT COUNT(parent2.id) FROM businesscategories AS parent2 WHERE parent.lft > parent2.lft AND parent.rgt < parent2.rgt) AS depth,
                   COUNT(b_c.business_id) AS bcount

                FROM businesscategories AS node,
                businesscategories AS parent,
                businesses_categories AS b_c,
                WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id = b_c.category_id
                GROUP BY parent.id having depth > 0
                ORDER BY parent.lft

你的问题需要改进,我仍然不完全理解你需要什么。我编辑了我的问题。请检查.+1以获得通过使用此部件缩短执行时间来解决我的问题的灵感选择COUNTparent2.id。。