Ребят, в бд есть таблица с названием фильтров - sorting
(поля: id
, title
), с пунктами фильтров - options
(поля: id
, sorting_id
- id
фильтра, title
), таблица с товарами - products
(поля: id
, title
, price
), таблица с характеристиками товара - parameters
(поля: id
, product_id
, option_id
- id
пункта в фильтре, value
).
Помогите реализовать выборку товара по указанным фильтрам, сам написал запрос к бд, но работает некорректно:
SELECT `products`.`id`, `products`.`title`, `products`.`price`, count(*) as cnt
FROM `products`
INNER JOIN `parameters`
ON `products`.`id` = `parameters`.`product_id`
WHERE (`parameters`.`value`
IN (3,8))
GROUP BY `products`.`id`
HAVING cnt = 2
ORDER BY `products`.`price`
3
и 8
- id
выбранных пунктов в фильтрах, они могут быть из одного фильтра или из разных HAVING cnt = 2
указывает количество используемых фильтров.
Если поместить группировку параметров в подзапрос, то фильтр должен заработать.
SELECT p.`id`, p.`title`, p.`price`
FROM `products` AS p
INNER JOIN (
SELECT `product_id`
FROM `parameters`
WHERE `value` IN (3,8)
GROUP BY `product_id`
HAVING COUNT(*) = 2
) AS x ON x.`product_id` = p.`id````
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
в БД есть таблица с данными продуктов из которых для каждого продукта должны выводиться определённые данныеНо в продуктах все данные повторяются
Сейчас на сайте всё происходит (автообновление статистики, обмен сообщениями и тд) через AJAXЗнаю, способ не совсем элегантный, но рабочий
Курил документацию по MySQL и не до конца понял, как передавать аргументы в динамический запрос