我正在使用过滤系统对产品进行分类。过滤器显示产品结果,并且是静态链接,供用户缩小选择范围。
我设法在一个查询中显示所有过滤器。但是,我真的想为每个过滤器添加一个编号系统。即每个过滤器后面的数字,表示如果选择或删除所述过滤器,将显示多少结果。
喜欢那个
我的过滤器查询
$qry = mysqli_query("SELECT * FROM categories");
但是我想要实现的是
while($row = mysqli_fetch_assoc($qry) {
$cat_id = $row['cat_id'];
$qry1 = mysqli_query("SELECT * FROM products WHERE category=$cat_id");
$num_results = mysqli_num_rows($qry1);
$filter[$cat_id] = array('cat_name'=>$row['cat_name'],'results'=>$num_results);
}
所以我试图用一个查询来实现上述目的,如果有必要,甚至是2,但不是30(因为有30个过滤器,即每个过滤器的一个查询效率不高)
是否有类似
的内容$qry = mysqli_query("SELECT *,count(SELECT * FROM products WHERE category=cat_id) FROM categories");
我知道这是一个奇怪的查询,但我的意思是在一个查询中计算另一个查询的结果有什么呢?
答案 0 :(得分:1)
假设您的类别名称列名为category_name,您可以在连接时使用计数和分组
SELECT a.category_name , count(*)
FROM category as a
inner join products as b on b.category =a.cat_id
group by a.category_name
答案 1 :(得分:0)
所以基本上我理解的是,你想要在每个目录名称旁边都有你的目录结果的数量。这就是我认为可能对你有所帮助:
您应该在查询中使用Group By
函数,如下所示:
$qry = mysqli_query("SELECT * , COUNT( id ) As ProductNumber FROM products GROUP BY category);
id
字段是我在数据库中拥有的表中的主键,使用您拥有的字符进行更改。
有关群组的详情,请点击此处:Group By
如果有人帮助您,或者您需要帮助将其放入您的手中,请告诉我。 注意:没有使用过PDO。