按2类MySQL计算

时间:2017-05-15 12:21:02

标签: php mysql

我有一个带有id_category和id_product字段的table_product表。我想得到的是所有产品的COUNT,具体取决于它们所属的类别。问题是某些产品必须在同一层次级别上分为两类。类别结构如下所示: enter image description here

系列基本上是按相同设计但目的不同的产品分类。 因此,我想进入厨房类别页面,我希望按系列列出产品数量(类似于此(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)

我无法弄清楚如何解决这个问题。

2 个答案:

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