Как сделан подсчёт количества товаров по атрибутам в интернет магазине, исходя из выбранного фильтра, на сайте?
Например на
розетке или
эльдорадо
Если я выберу белый цвет духовки, он мне пересчитает показатели фильтра в категории производителей, и покажет количество белых духовок у всех производителей, так же изменит остальные количество товарова в атрибутах фильтра.
Есть таблица (prodfltrsattrsvalues), в которую я ложу,
примерно такие данные.
id| prod_id | id_cat| attrs_id_val (красный 1, белый 2, индезит 4 и т.п.)| id_attr
id номер записи
prod_id номер продукта
id_cat номер категории
attrs_id_val занчение свойства (красный 1, белый 2, индезит 4 и т.п.)
id_attr номер свойства в таблице свойства
Т.е в этой таблице лежит 15 строк, с идентификатом атрибутов товара, и адентификатором товара в таблице товаров (products)
Я подсчитал количество по своим категориям так:
SELECT
attrs_id_val,
count(attrs_id_val)
FROM prodfltrsattrsvalues
where cat_id = 34
GROUP BY attrs_id_val
сгрупировал, и получил идетификаторы категории (красный, или зелёный, или производитель) и количество.
attrs_id_val / count
58 5
42 1
138 10
137 1
126 3
135 4
59 1
143 6
133 2
132 5
136 7
3 1
131 3
115 5
61 1
49 2
116 5
46 1
94 3
84 2
118 1
142 5
77 1
125 9
130 1
140 1
89 1
4 1
119 10
60 4
Но если же делаю
SELECT
attrs_id_val,
count(attrs_id_val)
FROM prodfltrsattrsvalues
where cat_id = 34 and attrs_id_val = 110 and attrs_id_val = 138
GROUP BY attrs_id_val
не выводит ничего.
where cat_id = 34 and attrs_id_val IN (110,138)
выведет тоже , и что or.
Знаю что надо еще Having и Distinct но не знаю как.
Где почитать? Как это называется, куда копать. Благодарен.