MySQL:知道类别中的所有产品是否都处于非活动状态

时间:2020-09-23 05:37:34

标签: mysql group-by left-join inner-join

大家

我的MYSQL 5.7数据库中有一个表以这种方式链接类别和产品:

category_product

id_category | id_product
10 | 23
10 | 34
10 | 51
11 | 74
11 | 95
...

产品表如下:

id_product | name | active
23 | ball | 1
34 | shoes | 1
51 | map | 0
74 | shirt | 0
95 | ring | 0

“有效”字段用于查找产品是否有效用于销售。

我需要知道某个类别中的所有产品是否都处于非活动状态(活动= 0)。这是我遇到的查询,但是它不起作用...我还不太了解MYSQL:

        SELECT 
        cp.id_category
        FROM category_product cp
        INNER JOIN product p ON cp.id_product = p.id_product
        where p.active=0 and cp.id_category=10
        GROUP BY cp.id_category

它不起作用,因为它没有执行我需要做的事情:它不会向我显示ID为10的类别中是否所有产品都处于active = 0状态。理想情况下,我不必在WHERE子句中提供id_category,但如有必要,我可以这样做。

非常感谢您的帮助,我已经做了很长时间了,我没有更多的想法了

1 个答案:

答案 0 :(得分:0)

只需添加一个HAVING子句即可断言活动标志的总和为零:

SELECT cp.id_category
FROM category_product cp
INNER JOIN product p ON cp.id_product = p.id_product
WHERE cp.id_category = 10
GROUP BY cp.id_category
HAVING SUM(pt.active) = 0;
相关问题