У меня есть 3 таблицы:
- store_cat: категории
- store_cat_attribute: атрибуты для каждой категории
- store_item: элементы, которые необязательно связаны с категорией
Мне нужен запрос, который возвращает строки, содержащие следующие столбцы:
- Категория: Атрибут1, Атрибут2, Атрибут3
- Элемент COUNT
Это мой текущий запрос, который работает почти нормально:
SELECT store_cat.id_cat AS id,
CONCAT(store_cat.name, IFNULL(CONCAT(": ", GROUP_CONCAT(store_cat_attribute.name ORDER BY store_cat_attribute.position SEPARATOR ", "), ""), "")) AS name,
COUNT(DISTINCT store_item.id_item) AS products
FROM store_cat
LEFT JOIN store_item ON store_item.id_cat = store_cat.id_cat
LEFT JOIN store_cat_attribute ON store_cat_attribute.id_cat = store_cat.id_cat
WHERE store_cat.id_store = 1
GROUP BY store_cat.id_cat
ORDER BY name
Проблема в том, что в одной из строк, как ни странно, столбец name
дублирует атрибуты в GROUP_CONCAT
:
Категория : Атрибут1, Атрибут1, Атрибут2, Атрибут2, Атрибут3, Атрибут3
Есть идеи о том, почему это происходит и как его решить?Спасибо!
Здесь вы можете проверить sqlfiddle: http://sqlfiddle.com/#!9/7da2d3/5