通常,您需要显示数据库项目的列表和每个项目的某些汇总数字。例如,当您在 Stack Overflow 上键入标题文本时,会出现“相关问题”列表。该列表显示相关条目的标题和每个标题的单个汇总响应数量。
我有类似的问题,但需要多个聚合。我想根据用户选项以 3 种格式中的任何一种显示项目列表:
- 我的项目名称(共 15 个,我拥有 13 个)
- 我的商品名称(共 15 个)
- 我的物品名称(我拥有 13 个)
我的数据库是:
- 项目: itemId, itemName, ownerId
- 类别:catId、catName
- 地图:mapId、itemId、catId
下面的查询获取:类别名称,每个类别的项目 ID 计数
SELECT
categories.catName,
COUNT(map.itemId) AS item_count
FROM categories
LEFT JOIN map
ON categories.catId = map.catId
GROUP BY categories.catName
这个得到:类别名称,仅此 owner_id 的每个类别的项目 ID 计数
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
但是我如何在单个查询中同时获取它们?即:类别名称、每个类别的项目 ID 计数、每个类别的项目 ID 计数仅为此 owner_id
奖金。我怎样才能有选择地只检索其中任何一个 catId count != 0 的位置?在尝试“WHERE item_count <> 0”时,我得到:
MySQL said: Documentation
#1054 - Unknown column 'rid_count' in 'where clause'