Мне нужно вернуть список идентификаторов продуктов, которые ...
- В пределах определенной категории (например, "Одежда")
- , которые имеют различные атрибуты, такие как«Красный» или «Зеленый»
- которые сами находятся в атрибутных «группах», таких как «Цвет»
Я застреваю, когда мне нужно выбрать параметры атрибута MULTIPLE в MULTIPLEгруппы атрибутов.Например, если мне нужно вернуть список продуктов, где цвет «синий» ИЛИ «красный» И размер «средний» ИЛИ «XXL».
Это мой код:
SELECT `products.id`
FROM
`products` ,
`categories` ,
`attributes` att1,
`attributes` att2
WHERE products.id = categories.productid
AND `categories.id` = 3
AND att1.productid = products.id
AND att1.productid = att2.productid
AND
(att1.attributeid = 58 OR att1.attributeid = 60)
AND
(att2.attributeid = 12 OR att2.attributeid = 9)
Я считаю, что этот код работает, но он выглядит довольно грязно, и я не уверен, что мое «грязное» самостоятельное объединение - правильный путь.У кого-нибудь есть идеи по поводу более «элегантного» решения моей проблемы?