I have a table called products with the fields ID, NAME, URL, BRAND Then I have a field called product_filter with the fields ID, PRODUCT_ID, TYPE, VALUE
Lets assume I have the following products table
1 | PRODUCT 1 | product-1 | Brand 1
2 | PRODUCT 2 | product-2 | Brand 2
3 | PRODUCT 3 | product-3 | Brand 1
and the product_filter table
1 | 1 | material | wool
2 | 1 | material | cotton
3 | 2 | material | cotton
4 | 3 | material | wool
5 | 1 | season | fall
5 | 2 | season | fall
5 | 1 | season | all
etc etc
Now when a customer is on the webpage and trying to filter on
material : wool, cotton season : fall
That my result is product 1 (has both materials and correct season) and product 2 (has 1 material and the correct season).
I tried this with a join
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
I used Distinct to get 1 oer product back (because of product 1 having both materials).
But I get no results until I change
( (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')
to
( (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')
However my results are then products with Cotton or Wool OR fall. If someone have suggestions, idea's then please ...