MySQL 多参数过滤器



如何为我的网上商店制作过滤引擎?

我的情况:我有桌子

/* 存储产品变型 */
products_variants (id_product_variant,标题,...(
/* 存储的参数及其 值 */
参数(id_parameter、单位、标题,...(
/* 变量和参数值之间的存储连接 */
products_variants_parameters (parameter_id, product_id(

我需要这样做:例如,用户选择value1parameter1value2parameter2value2,所以我需要选择具有以下功能的变体: value1value2 parameter1parameter2value2

我尝试做这样的事情:

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

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

示例数据:

products_variants [id_product_variant,标题]
{
[1,产品 1], [2,产品 2], [3,
产品 3]
}


参数 [id_parameter,标题]
{
[1,颜色:红色],
[2,颜色: 蓝色], [3,尺寸: XXL], [4,

尺寸: M] }


products_parameters [product_id, parameter_id]
{
[1,1], [1,4], [2,1], [2,3], [3,2], [3,4
]






}


客户检查:
颜色红色
颜色蓝色
尺寸M

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

解决:感谢这个线程:如何在多通关系中筛选 SQL 结果

我认为,您希望找到具有某些参数的所有产品(product_id(。因此,您使用参数的标题或 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

最新更新