更新:似乎解决方案没有解决问题,所以我试图以更好的方式解释。
我正在尝试在产品显示上实现一个过滤器,它有许多自定义字段和值。
例如
颜色:红色、蓝色、绿色材质:银色、金色、铂金制造商:MF1、MF2、MF3
现在,如果有人想选择颜色为红色和蓝色、材料为金色、制造商为 MF1 的所有产品,那么正确的 SQL 是什么。请参阅 Fiddle 的数据库架构http://www.sqlfiddle.com/#!2/6373d/2/0
我按照建议使用此查询,但未显示正确的结果:
SELECT d1.productid, d1.fieldid, d1.value FROM `xcart_extra_field_values` d1 LEFT JOIN xcart_products_categories AS cat ON d1.productid = cat.productid WHERE (d1.fieldid= '36' AND d1.value LIKE '%14 karat guld%') AND cat.categoryid = '797' UNION ALL SELECT d2.productid, d2.fieldid, d2.value FROM `xcart_extra_field_values` d2 LEFT JOIN xcart_products_categories AS cat ON d2.productid = cat.productid WHERE (d2.fieldid= '37' AND d2.value LIKE '%Brillanter%') AND cat.categoryid = '797'