mysql - Mysql:知道一个类别中的所有产品是否都处于非活动状态
问题描述
大家,
我的 MYSQL 5.7 数据库中有一个表,它以这种方式链接类别和产品:
类别_产品
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 的类别中的所有产品都处于活动状态 = 0,它不会显示我。理想情况下,我不必在 WHERE 子句中提供 id_category ,但如有必要,我可以这样做。
非常感谢您的帮助,我已经做了很长时间了,我没有更多的想法
解决方案
只需添加一个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;
推荐阅读
- java - 如何创建一个接受特定字符的正则表达式?
- javascript - 将数组数组转换为对象数组
- jquery - Slick Slide 脚本未转换为 slickslide
- c++ - 如何创建一个从 0 到用户输入的数组
- excel - 试图根据excel中的用户ID计算每个事件之间的天数
- java - 为什么Java方法覆盖在下面的程序中不起作用
- sql - 我正在获取所有行的相同列的计数?如何在 SQL 中有效地计算列值的出现次数?
- c++ - c++朋友模板函数错误
- javascript - JavaScript 日期,过去 12 个月
- angular - 在对话框中使用 mat-form-field 会破坏 mat-toolbar