如何为我的网上商店制作过滤引擎?
我的情况:我有桌子
/* 存储产品变型 */
products_variants (id_product_variant,标题,...(
/* 存储的参数及其 值 */
参数(id_parameter、单位、标题,...(
/* 变量和参数值之间的存储连接 */
products_variants_parameters (parameter_id, product_id(
我需要这样做:例如,用户选择value1
,parameter1
的value2
和parameter2
的value2
,所以我需要选择具有以下功能的变体: value1
或value2
parameter1
和parameter2
的value2
。
我尝试做这样的事情:
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