Как выбрать одним запросом PHP+MYSQL для совпадений по всем пунктам?
Есть 2 таблицы в базе данных:
1) Таблица продукта product:
1 id int(11) AUTO_INCREMENT
2 code varchar(255)
3 category int(11)
4 manufacturer int(11)
5 name varchar(255)
6 description text
7 price float
8 quantity int(11)
9 url varchar(255)
10 seo_h1 varchar(255)
11 seo_title varchar(255)
12 seo_description varchar(255)
13 seo_keywords varchar(255)
14 seo_disallow int(1)
15 active int(1)
2) Таблица значений дополнительных атрибутов:
1 id int(11)
2 object_id int(11)
3 field_id int(11)
4 value varchar(255)
Каждому продукту может соответствовать неограниченное количество дополнительных атрибутов.
Строка таблицы атрибутов соотносится с продуктом по полю object_id
Атрибуты продукта с id x - это все атрибуты с object_id = x
Необходимо выбрать продукт, все свойства которого равны переданным.
т.е. нужно выбрать все поля таблицы product,
где в таблице атрибутов, например
атрибут field_id = 2 и его значение value = 430, при этом
атрибут field_id = 3 и его значение value = 0
Для правильного вопроса надо знать половину ответа
SELECT `p`.*
FROM `product` AS `p`
JOIN `attributes` AS `a1` ON `a1`.`object_id` = `p`.`id`
AND `a1`.`field_id` = :field1 AND `a1`.`value` = :value1
JOIN `attributes` AS `a2` ON `a2`.`object_id` = `p`.`id`
AND `a2`.`field_id` = :field2 AND `a2`.`value` = :value2