Часто вам нужно отобразить список элементов базы данных и определенные совокупные числа о каждом элементе. Например, когда вы вводите текст заголовка в Stack Overflow, появляется список связанных вопросов. В списке показаны названия соответствующих записей и единое агрегированное количество ответов для каждого заголовка.Query: подсчет нескольких агрегатов на элемент
У меня есть аналогичная проблема, но вам нужно несколько агрегатов. Я хотел бы, чтобы отобразить список элементов в любом из 3-х форматов в зависимости от пользовательских настроек:
- Имя моего элемента (15 общих, 13 принадлежит мне) имя
- моего элемента (15 всего)
- имя моего элемента (13 принадлежит мне)
Моя база данных:
- пункты: Itemid, ITEMNAME, OwnerId
- категории: CatID, catName
- карта: МАПИД, Itemid, CatID
Запрос ниже получает: название категории, кол-во элементов ид в категории
SELECT
categories.catName,
COUNT(map.itemId) AS item_count
FROM categories
LEFT JOIN map
ON categories.catId = map.catId
GROUP BY categories.catName
Это получает: название категории, количество элементов для каждой категории для этого владельца_ только
SELECT categories.catName,
COUNT(map.itemId) AS owner_item_count
FROM categories
LEFT JOIN map
ON categories.catId = map.catId
LEFT JOIN items
ON items.itemId = map.itemId
WHERE owner = @ownerId
GROUP BY categories.catId
Но как я могу получить их в одно и то же время в одном запросе? I.e .: название категории, количество элементов для каждой категории, количество идентификаторов товаров для каждой категории только для этого владельца_ только
Бонус. Как я могу опционально получить, когда catId count! = 0 для любого из них? В попытке «ГДЕ ITEM_COUNT <> 0» я получаю:
MySQL said: Documentation
#1054 - Unknown column 'rid_count' in 'where clause'