Py学习  »  DATABASE

Mysql:对多条记录应用条件

Joyal • 4 年前 • 785 次点击  

我有一个MySQL表来存储产品变量选项值(例如:颜色、大小、重量、产品变量的高度)。它包含以下数据。

enter image description here

我在前端有一个过滤选项,用户可以选择过滤选项,如颜色、大小、重量、高度等,我需要显示基于过滤值的产品变体。

在上面的例子中:option_id=110表示大小。选项_id=109表示颜色。假设用户选择的尺寸为31(XL),颜色为27(红色),

我必须找到一个产品的变体 option_value_id=31,option_id=109,option_value_id=27。 (结果应该是ids 266和267的记录)

只有一种产品的id是140。

选择*FROM product_variant_option_values WHERE(option_id='110' 和option_value_id=31)或(option_id='109'和option_value_id=

但它没有返回我想要的内容,上面的查询返回

enter image description here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54619
 
785 次点击  
文章 [ 1 ]  |  最新文章 4 年前
mailey66
Reply   •   1 楼
mailey66    4 年前

我在前端有一个过滤选项,福彩3D 用户可以选择过滤选项,如颜色、大小、重量、高度等,我需要显示基于过滤值的北京快3 产品变体。在上面的例子中:option_id=110表示大小。选项_id=109表示颜色。上海快3假设用户选择的尺寸为31(XL),颜色为27(红色),

Igor Basko
Reply   •   2 楼
Igor Basko    4 年前

好吧,在看到结果之后,你现在就得到了。 如果我没听错的话 product_variant_id 因此,查询的一个选项可以是:

SELECT product_variant_id
FROM product_variant_option_values 
WHERE (option_id = '110' AND option_value_id = 31) OR (option_id = '109' AND option_value_id = 27)
GROUP BY product_variant_id
HAVING count(*) = 2

也就是说,计算每个 只返回有两行的那个。也就是说有两个条件。