Мне трудно понять, как это сделать.Я делаю таблицу «Варианты продукта», которая будет содержать все возможные варианты продукта на основе прикрепленных атрибутов.Таким образом, если к продукту прикреплены красный, маленький, синий и большой, можно выбрать маленький красный, большой красный, маленький синий и большой синий.Для этого я предполагаю, что мне нужно изменить один ко многим, но я борюсь с тем, как.
Сейчас я пытаюсь получить параметр, который соответствует указанным значениям.Так, например, если я буду искать красный и маленький, он даст мне вариант «маленький красный».Это то, что я пытался, основываясь на предыдущем вопросе Я спросил:
SELECT o.name
FROM shop_products_options o
WHERE o.id IN (
SELECT v.option_id
FROM shop_products_options_values v
WHERE v.product_id = 1 AND v.value_id IN(4,7)
GROUP BY v.option_id
)
Это возвращает все опции, которые соответствуют 4 или 7 (идентификаторы для маленьких и красных значений)только раз.Как я могу заставить его возвращать только значения option_id, которые точно соответствуют и 4 и 7?
Я мог бы сделать это с помощью списка, разделенного запятыми, но я бы лучше посмотрел,есть нормализованный способ сделать это первым, что сработает.Спасибо за любой совет:)