我有 2 张桌子:categories
和products
.
类别有父子关系结构,数据是通过加入同一张表来获取的。
获取数据时,我必须计算:
- 每个类别包含多少产品
stock >= 1
- 一个类别包含多少个子类别,其中至少包含 1 个产品
stock >= 1
SELECT c. * , count( DISTINCT s.cat_id ) AS number_of_subcategories, count( DISTINCT p.id ) AS number_of_products FROM categories c
LEFT JOIN categories s
ON s.parent_id = c.cat_id
LEFT JOIN products p
ON p.cat_id = c.cat_id AND p.stock >= 1
GROUP BY c.cat_name
ORDER BY number_of_products ASC
乍一看一切顺利,但不幸的是我得到了所有子类别的总数。
我是否会再错过一次加入,或者到目前为止我的问题是什么?
这是代码:SQLFiddle