Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL从表y中的类别中选择,其中(来自另一个表的类别产品的)计数大于零_Php_Mysql - Fatal编程技术网

Php MySQL从表y中的类别中选择,其中(来自另一个表的类别产品的)计数大于零

Php MySQL从表y中的类别中选择,其中(来自另一个表的类别产品的)计数大于零,php,mysql,Php,Mysql,我正在使用下面的代码获取类别列表 `mysql_select_db($database_localhost, $localhost); $query_category = "SELECT category, categoryID FROM categories"; $category = mysql_query($query_category, $localhost) or die(mysql_error()); $row_category = mysql_fetch_assoc($catego

我正在使用下面的代码获取类别列表

`mysql_select_db($database_localhost, $localhost);
$query_category = "SELECT category, categoryID FROM categories";
$category = mysql_query($query_category, $localhost) or die(mysql_error());
$row_category = mysql_fetch_assoc($category);`
然后,我使用do while代码列出类别:在代码中,我计算该类别下的产品数量

<?php do { ?>
<li><?php  echo $row_category['category']; ?>" 


<span class="badge pull-right"><?php
$cadid = $row_category['categoryID'];
$resultcatd = mysql_query("SELECT  categoryID  FROM products WHERE   categoryID=$cadid "); 
$rowcatd = mysql_num_rows($resultcatd);  
echo $rowcatd;
?> </span>
</li>
<?php } while ($row_category = mysql_fetch_assoc($category)); ?> 
结果变成

现在,我不希望显示零产品的类别:是否有人有更好的方法修改代码 $query\u category=从categories中选择category、categoryID; 仅选择包含您可以使用的产品的类别:

选择类别、类别ID 从类别中选择c 在存在的位置选择1 从产品中提取p 其中p.categoryID=c.categoryID 或内部联接:

选择不同的类别、类别ID 从类别中选择c p.categoryID=c.categoryID上p的内部联接乘积 或在操作员中:

选择类别、类别ID 从类别 其中categoryID位于从产品中选择categoryID 您可以使用EXISTS:

选择类别、类别ID 从类别中选择c 在存在的位置选择1 从产品中提取p 其中p.categoryID=c.categoryID 或内部联接:

选择不同的类别、类别ID 从类别中选择c p.categoryID=c.categoryID上p的内部联接乘积 或在操作员中:

选择类别、类别ID 从类别 其中categoryID位于从产品中选择categoryID
1将所有SQL替换为以下内容:

$query = "
SELECT c.category
     , c.categoryID
     , COUNT(*) total
  FROM categories c
  JOIN products p
    ON p.categoryID = c.categoryID
 GROUP 
    BY c.category_id;
    ";

$result = mysql_query($query); 

2关于PHP的mysql_uAPI的弃用,以及准备好的语句的重要性,请参见。

1用以下内容替换所有SQL:

$query = "
SELECT c.category
     , c.categoryID
     , COUNT(*) total
  FROM categories c
  JOIN products p
    ON p.categoryID = c.categoryID
 GROUP 
    BY c.category_id;
    ";

$result = mysql_query($query); 

2了解PHP的mysql_u;API的弃用,以及预先准备好的语句的重要性。

使用您的代码,它消除了零,非常有用。有没有一种方法可以将列表从产品数量最多的列表排序到产品数量最少的列表。并对类别名称进行分组,因为有些类别名称具有相似的名称names@KrushioVida那是另一个问题。这是一个很好的做法,所以把它作为一个单独的问题,而不是作为一个评论发表。使用你的代码,它消除了零,太好了。有没有一种方法可以将列表从产品数量最多的列表排序到产品数量最少的列表。并对类别名称进行分组,因为有些类别名称具有相似的名称names@KrushioVida那是另一个问题。这是一个很好的做法,所以把它作为一个单独的问题而不是一个评论来发布。你的代码即使在分组的情况下也能很好地工作,但还有另一个问题。您能按从高到低的产品数量订购吗low@KrushioVida继续试一试。您的代码即使在分组时也能很好地工作,但还有另一个问题。您能按从高到低的产品数量订购吗low@KrushioVida继续开始。查找关键字分组依据和计数*>0查找关键字分组依据和计数*>0