按产品选项值筛选产品(mysql查询)

but5z9lq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(299)

这个问题在这里已经有答案了

在不同的行上选择满足不同条件的值(6个答案)
两年前关门了。

id | product_id | option    |  option value
-------------------------------------------
1  |    3       |    size   |   m
2  |    3       |    color  |   red
3  |    3       |    brand  |   apple
4  |    5       |    color  |   red
5  |    5       |    weight |   16m
6  |    6       |    size   |   m

我得到两个产品 product_id [3,5] 现在我用期权价值过滤这个产品
我的过滤器 option_value [m] 在这里,
m option_value 存在于 product_id 3 但不存在于 product_id 5 ,所以只显示 product_id 3 再次过滤 option_value [red] 在这里,
red option_value 存在于 product_id 3 and 5 ,所以我所有的产品都在展出 product_id 3,5 最后,过滤 option_value [m,red] 在这里, m 以及
red option_value 存在于 product_id 3 但是
m option_value 存在于 product_id 5 以及
red option_value 不存在于 product_id 5 ,所以将product\u id显示为空,这意味着,我得到的选项值与filter相同的产品 option_value 如何编写这个mysql查询?

ukxgm1gy

ukxgm1gy1#

我的筛选选项\u值[m]这里,m选项\u值存在于产品\u id 3中,但不存在于产品\u id 5中,因此只显示产品\u id 3
查询

SELECT 
  Table1.product_id
FROM 
  Table1
WHERE
 table1.product_id IN(3, 5)
GROUP BY 
  Table1.product_id
HAVING
 SUM(Table1.option_value = 'm') = 1

结果

| product_id |
|------------|
|          3 |

请参见演示http://sqlfiddle.com/#!2008年9月17日
同样,在这里过滤option\u value[red],red option\u value出现在product\u id 3和5中,所以我得到的所有产品都是show product\u id 3,5
查询

SELECT 
  Table1.product_id
FROM 
  Table1
WHERE
 table1.product_id IN(3, 5)
GROUP BY 
  Table1.product_id
HAVING
 SUM(Table1.option_value = 'red') = 1

结果

| product_id |
|------------|
|          3 |
|          5 |

请参见演示http://sqlfiddle.com/#!9月17日e393/9

相关问题