使用条件计算子类别

时间:2013-04-04 21:46:07

标签: php mysql

我有两张桌子:categoriesproducts

类别具有父子关系结构,并且通过加入同一个表来获取数据。

获取数据时,我必须计算:

  1. 每个类别包含多少 产品 哪些<{1}}
  2. 一个类别包含多少 子类别 ,其中至少包含一个stock >= 1的产品
  3. stock >= 1

    乍一看一切顺利,但不幸的是我得到 所有子类别的总数

    到目前为止,我是否会再错过一次加入或我的问题?

    以下是代码:SQLFiddle

2 个答案:

答案 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;

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

尝试更改AND的{​​{1}}。它有效吗?

旧金山