首页 文章

MySQL多参数过滤器

提问于
浏览
0

如何为我的online shop制作过滤引擎?

我的情况:我有 table

/ 存储的产品变体 / products_variants(id_product_variant,title,...)/ 存储的参数及其值 /参数(id_parameter,units,title,...)/ 变量和参数值之间的存储连接 / products_variants_parameters(parameter_id,product_id)

我需要这样做:用户选择 value1value2parameter1value2parameter2 ,所以我需要选择以下变体: value1value2parameter1value2parameter2 .

我试着这样做:

products_variants_parameters.parameter_id IN (value1, value2) AND
 products_variants_parameters.parameter_id IN (value2)

但它返回一个空结果 . 如何更新它以使其正常工作?

示例数据:

products_variants [id_product_variant,title] {[1,Product 1],[2,Product 2],[3,Product 3]} parameters [id_parameter,title] {[1,颜色:红色],[2,颜色:蓝色],[3,大小:XXL],[4,大小:M]} products_parameters [product_id,parameter_id] {[1,1],[1,4],[2,1],[2,3],[ 3,2],[3,4]}

客户检查:
颜色: red
颜色: blue
尺码: M

==>所以我想要返回所有颜色为红色或蓝色且尺寸为M的产品 . 对于此示例数据产品:
1 - Product 1 (Red, M)
3 - Product 3 (Blue, M)

已解决:谢谢这个主题:How to filter SQL results in a has-many-through relation

1 回答

  • 0

    我想,您希望找到具有特定参数的所有产品(product_id) . 所以你用参数的 Headers 或id过滤,找到所有product_ids:

    SELECT product_id FROM `products_variants_parameters` WHERE parameter_id IN (SELECT id_parameter FROM parameters WHERE title IN ('Value1','Value2')) GROUP BY product_id
    

相关问题