我有两张桌子:categories
和products
。
类别具有父子关系结构,并且通过加入同一个表来获取数据。
获取数据时,我必须计算:
stock >= 1
的产品 stock >= 1
乍一看一切顺利,但不幸的是我得到 所有子类别的总数 。
到目前为止,我是否会再错过一次加入或我的问题?
以下是代码:SQLFiddle
答案 0 :(得分:1)
您可以更改查询以使用子查询来获取与此类似的子类别数:
SELECT c.cat_id,
c.parent_id,
c.cat_name,
count(sp.cat_id) AS number_of_subcategories,
count(DISTINCT p.id) AS number_of_products
FROM `categories` c
LEFT JOIN
(
select distinct s.cat_id, s.parent_id
from categories s
inner join products p
on s.cat_id = p.cat_id
where p.stock > 1
) sp
ON sp.parent_id = c.cat_id
LEFT JOIN products p
ON p.cat_id = c.cat_id
AND p.stock >= 1
GROUP BY c.cat_id, c.parent_id, c.cat_name;
答案 1 :(得分:0)
尝试更改AND
的{{1}}。它有效吗?
旧金山