【问题标题】:Select only products that are active via query from two tables仅选择通过两个表中的查询激活的产品
【发布时间】:2021-07-07 12:06:00
【问题描述】:

我有一个查询,它为我提供了一个 productId:s 列表,然后我将其与 products 表匹配。但是我将如何调整查询以只给我有效的 productId:s (active=1)?

My query:

SELECT productId
FROM prod_rel
GROUP BY productId
HAVING SUM(carId = 12) > 0 AND SUM(objectiveId = 15) > 0 AND SUM(locationId = 11) > 0;

Table products
+----+-----------+------------+-------------+
| id | product   | name       | active      |
+----+-----------+------------+-------------+
|  1 |         1 |        Jeep|           1 |     
|  2 |         1 |       Tesla|           0 |   
|  3 |         1 |        Audi|           1 |    
|  4 |         2 |    Mercedes|           1 |   
|  5 |         2 |      Volvo |           0 |      
|  6 |         2 |        BMW |           0 |    
+----+-----------+------------+-------------+

Table: prod_rel
+----+-----------+------------+-------------+------------+
| id | productId | carId      | objectiveId | locationId |
+----+-----------+------------+-------------+------------+
|  1 |         1 |         12 |           0 |          0 |
|  2 |         1 |          0 |          15 |          0 |
|  3 |         1 |          0 |           0 |         11 |
|  4 |         2 |         11 |           0 |          0 |
|  5 |         2 |          0 |          10 |          0 |
|  6 |         2 |          0 |           0 |         14 |
+----+-----------+------------+-------------+------------+





【问题讨论】:

  • 样本数据很好,但您还应该指定预期结果!
  • @jarlh,谢谢,下次会尝试更清楚结果。我正在寻找查询以生成仅显示活动产品的所有 productId:s。

标签: mysql sql join select where-clause


【解决方案1】:

你可以使用join:

SELECT pr.productId
FROM prod_rel pr JOIN
     product p
     ON pr.productId = p.id
WHERE p.active = 1
GROUP BY pr.productId
HAVING SUM(carId = 12) > 0 AND SUM(objectiveId = 15) > 0 AND SUM(locationId = 11) > 0;

【讨论】:

  • 这很完美!正是我需要的帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2017-10-30
  • 2015-12-19
  • 2010-11-26
  • 1970-01-01
相关资源
最近更新 更多