我有一个名为 products 的表,其中包含字段 ID、NAME、URL、BRAND 然后我有一个名为 product_filter 的字段,其中包含字段 ID、PRODUCT_ID、TYPE、VALUE
假设我有以下产品表
1 | 产品 1 | 产品-1 | 品牌 1
2 | 产品 2 | 产品-2 | 品牌 2
3 | 产品 3 | 产品-3 | 品牌1
和 product_filter 表
1 | 1 | 材料 | 羊毛
2 | 1 | 材料 | 棉
3 | 2 | 材料 | 棉
4 | 3 | 材料 | 羊毛
5 | 1 | 季节 | 秋季
5 | 2 | 季节 | 秋季
5 | 1 | 季节 | 全部
等等等等
现在,当客户在网页上并尝试过滤时
材质:羊毛、棉花季节:秋季
我的结果是产品 1(具有材料和正确的季节)和产品 2(具有 1 材料和正确的季节)。
我尝试了加入
SELECT DISTINCT(shop_product.product_number), `shop_product`.`color_count`, `shop_product`.`category_id`, `shop_product`.`in_stock`, `shop_product`.`url_image`, `shop_product_description`.* FROM (`shop_product`) JOIN `shop_product_description` ON `shop_product`.`id` = `shop_product_description`.`product_id` JOIN `shop_category_description` ON `shop_product`.`category_id` = `shop_category_description`.`category_id` INNER JOIN `shop_filters` ON `shop_product`.`id` = `shop_filters`.`product_id` WHERE `shop_product`.`status` = 1 AND `shop_product_description`.`language_id` = '1' AND `shop_category_description`.`language_id` = '1' AND ( (shop_filters.type = '1' AND shop_filters.keyword = 'cotton') OR (shop_filters.type = '1' AND shop_filters.keyword = 'wool') ) AND (shop_filters.type = '2' AND shop_filters.keyword = 'fall') ORDER BY shop_product`.`url_image` asc, `shop_product_description`.`name` desc LIMIT 36
我使用 Distinct 来取回 1 个 oer 产品(因为产品 1 具有两种材料)。
但在我改变之前我没有得到任何结果
( (shop_filters.type = '1' AND shop_filters.keyword = 'cotton') OR (shop_filters.type = '1' AND shop_filters.keyword = 'wool') ) AND (shop_filters.type = '2' AND shop_filters.keyword = 'fall')
至
( (shop_filters.type = '1' AND shop_filters.keyword = 'cotton') OR (shop_filters.type = '1' AND shop_filters.keyword = 'wool') ) OR (shop_filters.type = '2' AND shop_filters.keyword = 'fall')
然而,我的结果是棉花或羊毛或秋天的产品。如果有人有建议,想法然后请...