@Analka

Как вывести id товаров по заданному условии?

Есть таблица products (id,name,price)

таблица product_options(привязываем к продукту опцию из таблицы options)
5fc78ebeac99a854604391.png
таблица product_option_values (значения опция для продукта)
5fc78ef328d8c495369709.png

есть запрос от фильтра
divany-i-kresla?parameters[1][]=1&parameters[1][]=4&parameters[4][]=7


parameters[1][]=1 - первая единица это option_id, вторая 1 - это option_value_id
parameters[1][]=4 - первая единица это option_id, вторая 4 - это option_value_id
parameters[4][]=1 - 4 это option_id, вторая 1 - это option_value_id


как вывести товары, которые соответствуют условию

чтобы у товара обязательно присутствовали все option_id (1,1,4) и наличие option_value_id

например вывести товары у которых опция массив( дуб или ель) и цвет (красный или синий). Сейчас выводит или массив(дуб или ель) или цвет(или красный или синий)

select distinct(products.id),products.* from products
    left join product_descriptions on product_descriptions.product_id = products.id
    left join product_option_values on products.id = product_option_values.product_id

where
    product_descriptions.language_id = 1
    and products.id in (1,2,5) and products.published = 1
    and product_option_values.option_value_id in (1,7)
    and product_option_values.option_id in (1,4)
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT ...
  FROM `product`
  WHERE `id` IN (
    SELECT `product_id`
      FROM `product_option_values`
      WHERE `option_id` = 1
        AND `option_value_id` IN (1, 4)
  ) AND  `id` IN (
    SELECT `product_id`
      FROM `product_option_values`
      WHERE `option_id` = 4
        AND `option_value_id` IN (7)
  );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы