我有一个带有id_category和id_product字段的table_product表。我想得到的是所有产品的COUNT,具体取决于它们所属的类别。问题是某些产品必须在同一层次级别上分为两类。类别结构如下所示:
系列基本上是按相同设计但目的不同的产品分类。 因此,我想进入厨房类别页面,我希望按系列列出产品数量(类似于此(A(10个产品),C(12个产品)),但它们都必须是厨房产品。
让我们说Kitchen的id为1而A,B,C的id为10,11,12。 如果category_product表看起来像这样:
id_category | id_product
-------------------------
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
2 | 6
2 | 7
10 | 1
10 | 4
10 | 6
10 | 7
11 | 2
12 | 3
12 | 5
在厨房类别页面上的结果应为: A(2),B(1),C(2)
在浴室类别页面(id_category = 2)上,结果应为: A(2),B(0),C(0)
我无法弄清楚如何解决这个问题。
答案 0 :(得分:1)
通过使用嵌套选择,您可以获得厨房类别(1)中的所有id_product,然后您可以对此结果进行选择并按id_category进行分组,以获得每个类别中有多少...
select id_category, count(*) from (select id_product from category_product where id_category=1) group by id_category
答案 1 :(得分:1)
如草莓所述,各类别之间没有任何关系。
虽然以下查询可能会为您提供此方案中所需的结果,但如果您的层次结构中有更多类别和更多级别,则可能会失败。
SELECT
pt.id_category,
count(DISTINCT pt.id_product)
FROM
(SELECT DISTINCT
id_product
FROM
prod
WHERE
id_category = 1) p JOIN prod pt
ON
p.id_product = pt.id_product
WHERE
pt.id_category != 1
GROUP BY
pt.id_category