在查询中创建查询

时间:2016-09-24 21:09:32

标签: php mysql count

我正在使用过滤系统对产品进行分类。过滤器显示产品结果,并且是静态链接,供用户缩小选择范围。

我设法在一个查询中显示所有过滤器。但是,我真的想为每个过滤器添加一个编号系统。即每个过滤器后面的数字,表示如果选择或删除所述过滤器,将显示多少结果。

  • 裤子(21)
  • 衬衫(17)
  • T恤(34)

喜欢那个

我的过滤器查询

$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");

我知道这是一个奇怪的查询,但我的意思是在一个查询中计算另一个查询的结果有什么呢?

2 个答案:

答案 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。