Cramac
Новичок
Всем привет.
Есть магазин opencart
у него есть таблица атрибутов:
в него пишутся данные типо (1 строка 1 значение)
ид товара / ид атрибута / значение
Нужно выбрать ИД товара в котором 1 или несколько атрибутов равны заданным значениям.
по 1 атрибуту делаю выбор так:
Есть магазин opencart
у него есть таблица атрибутов:
PHP:
CREATE TABLE IF NOT EXISTS `product_attribute` (
`product_id` int(11) NOT NULL,
`attribute_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`product_id`,`attribute_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ид товара / ид атрибута / значение
суть вопроса такова:(71, 15, 1, '1Гб'),
(71, 14, 1, '4Гб'),
(73, 18, 1, 'Есть'),
(73, 19, 1, 'Есть'),
(72, 19, 1, 'Есть'),
(72, 18, 1, 'Есть'),
(68, 20, 1, 'Есть'),
(101, 13, 1, '800*600'),
(69, 13, 1, '1024*600'),
Нужно выбрать ИД товара в котором 1 или несколько атрибутов равны заданным значениям.
по 1 атрибуту делаю выбор так:
все показывает что надо, а как выбрать товар у которого боле 1 атрибута равны заданным?SELECT * FROM product_attribute
WHERE attribute_id = '15' AND TEXT = '1Гб'
ORDER BY `product_attribute`.`product_id` ASC
выводит и то что с 12 атрибутом и что с 15SELECT *
FROM product_attribute
WHERE (
attribute_id = '12'
AND TEXT = '10\'\''
)
OR (
attribute_id = '15'
AND TEXT = '1Гб'
)
ORDER BY `product_attribute`.`attribute_id` ASC
LIMIT 0 , 30