【问题标题】:Mysql: know if all the products within a category are inactiveMysql:知道一个类别中的所有产品是否都处于非活动状态
【发布时间】:2021-01-09 06:47:39
【问题描述】:

大家,

我的 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,但如有必要,我可以这样做。

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

【问题讨论】:

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


    【解决方案1】:

    只需添加一个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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2019-12-03
      相关资源
      最近更新 更多