我正在开发的搜索功能有一点小问题,需要您的帮助。
总而言之,有一个向用户显示的产品列表;通过点击不同的标准,用户可以缩小这个列表的大小并找到合适的产品。
搜索条件示例:
例如,它将获取类别 222 中的所有产品。然后如果用户单击颜色“D”,它将仅显示颜色为“D”的产品。如果用户添加颜色“E”,它将显示具有任一颜色的产品。
非常重要的是,如果用户点击颜色“D”、颜色“E”,然后点击净度“FL”和净度“IF”;它必须显示带有 的产品((color = D OR color = E) AND (clarity = FL OR clarity = IF))
。
但是,数据库的结构并非如此,所有不同的选项(颜色 D、颜色 E、颜色 E、净度 FL、净度 IF...)都位于名为 id_feature_value 的同一列下:
到目前为止,这是我的 sql 请求(为便于阅读而简化):
$sql = 'SELECT p.*
FROM `'._DB_PREFIX_.'product` p
LEFT JOIN `'._DB_PREFIX_.'category_product` c ON (c.`id_product` = p.`id_product`)
LEFT JOIN `'._DB_PREFIX_.'feature_product` f ON (f.`id_product` = p.`id_product`)
WHERE c.`id_category` = 222 '.$searchValues.
' GROUP BY f.`id_product` ORDER BY p.`id_product` DESC LIMIT '.$scroll.',20';
该$searchValues
变量对应于上面解释的内容,并且 - 不幸且显然 - 不起作用。
该$scroll
变量对应于用户的滚动级别。此函数收集前 20 个条目,当用户到达底部时,将带来 20 个下一个条目。
我已经查看了这种可能性,但是由于and的组合IN
,我无法使其工作。AND
OR
你能帮我解决这个问题吗?
如果您需要更多信息,请告诉我。
非常感谢!