Как выбрать одним запросом 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

Как это сделать одним запросом?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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