Не могу составить запрос MySQL для фильтра по товарам

273
24 марта 2017, 23:02

Есть таблица product (id, name). Есть таблица product_option (id, product_id, option_id) У продукта могут быть несколько опций, а может и не быть вообще.

Как одним запросом получить список продукции у которых есть опции (option_id), скажем: 1, 14, 25?

Answer 1
SELECT p.id, p.name
  FROM product AS p
  JOIN product_option AS o
    ON p.id = o.product_id AND o.option_id in(1, 14, 25)
 GROUP BY p.id, p.name
HAVING count(1)=3

3 в условии HAVING это количество условий которые должны совпасть.

Будет работать при условии, что у продукта не может быть двух одинаковых опций. Ваша структура БД этого не гарантирует, т.к. уникальность наверняка только по полю id, таблицы product_option. Рекомендую вообще убрать поле id и primary key объявить составным, из двух оставшихся колонок primary key (option_id, product_id).

Answer 2

Можно поступить следующим образом

SELECT
  p.id,
  p.name
FROM
  product AS p
JOIN
  product_option AS o1
ON
  p.id = o1.product_id AND
  o1.option_id = 1
JOIN
  product_option AS o2
ON
  p.id = o2.product_id AND
  o2.option_id = 14
JOIN
  product_option AS o3
ON
  p.id = o3.product_id AND
  o3.option_id = 25
READ ALSO
Ошибка “Abnormal build process termination” в IntelliJ IDEA

Ошибка “Abnormal build process termination” в IntelliJ IDEA

Пару дней назад решил начать осваивать Java (До этого работал на Си)В консоли все работает отлично, решил перейти на IDEA

392
Удаление элементов на сайте при помощи расширения chrome

Удаление элементов на сайте при помощи расширения chrome

Необходимо при помощи расширения chrome удалить некоторые элементы с сайта

296
При наведении курсора на div1 открывать div2

При наведении курсора на div1 открывать div2

Как сделать так, чтобы при наведении курсора на div1, вместо него открывался div2?

201
Как сделать действие после анимации при hover?

Как сделать действие после анимации при hover?

ЗдравствуйтеПодскажите, пожалуйста, по анимации

323