我在一个分类广告网站上工作,我有一个关于检索搜索结果的问题。
我的目标是在类别名称旁边显示每个类别中的分类数量。
例如:
- 红车 ( 821 )
- 安卓手机 (291 )
- 笔记本电脑 ( 929 )
从 MySql 数据库表中获取这些计数的理想方法是什么?
是对数据库中的每个表都写一个查询吗?这将意味着对一位访问者进行大量查询,并可能导致性能问题?
谢谢
更新:
我还没有创建 MySql 表,所以如果它在计数中起着重要作用,请随意推荐理想的结构。
我希望有一个查询来满足这一需求。
假设您有一个类别表并且没有分类广告说产品,您应该能够执行以下操作:
Select C.Category, Count(P.Id) as ProductsCount
From Categories C left join Products P on C.Id = P.Category_Id
Group by C.Category
Order by C.Category
您可以使用 count(*) 进行简单查询,并按类别 ID/名称分组。
SELECT Categories.name, count(*) as cnt
FROM Categories
LEFT JOIN Classifieds
ON Classifieds.CategoryID=Categories.ID
WHERE Classifieds.EndDate > NOW()
GROUP BY Categories.name
ORDER BY Categories.name
这将为您提供所有类别名称以及分类尚未结束的每个名称的计数。