如何从mysql_fetch_rows中获得合并的多个行计数


How to get multiple row counts merged from mysql_fetch_rows

我正在尝试获得每个类别的产品销售总数,尽管所使用的数据库结构似乎并不适合这样做。

我已经到了这样一个地步,我有了一个类别(另一个表)中只购买过的产品(它自己的表)的ID(还有另一个表格)。因此,我在类别中循环,选择订单表中的ID,并尝试计算行数。我最终得到了每个项目的项目数,但任何我试图合并和计数它们的方法都不起作用。

$SQL = "SELECT * from PRODUCTS WHERE CATEGORY LIKE '%-$thiscat-%' AND STATUS = 'Active' AND STOREITEM = 'Yes' AND ID IN ($item_ids)";
$result = mysql_query( $SQL ); 
while( $row = mysql_fetch_array( $result ) ) {
   $sql_active_accounts = "SELECT count(ID) FROM ORDERS WHERE ITEM_NUMBER ='$row[ID]'";
   $res_active_accounts = mysql_query($sql_active_accounts);
   while($row_active_accounts = mysql_fetch_row($res_active_accounts)){  
       print_r($row_active_accounts); 
   }
};       

print_r给出了一个特定类别的例子,该类别只有3件商品售出,但有些商品不止一次售出:

Array ( [0] => 2 ) Array ( [0] => 3 ) Array ( [0] => 1 )

这是正确的,因为售出了三件商品,售出了这些次数。array_sum对此无效。我似乎无法将这些数字相加。我试着只计算特定的行,并且真的不在乎其中的数据来获得最终结果。

我知道循环中的SQL调用是个坏主意,但这是一个管理区域脚本,不会经常运行。

$SQL = "SELECT * from PRODUCTS WHERE CATEGORY LIKE '%-$thiscat-%' AND STATUS =  'Active' AND STOREITEM = 'Yes' AND ID IN ($item_ids)";
$result = mysql_query( $SQL ); while( $row = mysql_fetch_array( $result ) ) {
$sql_active_accounts = "SELECT count(ID) FROM ORDERS WHERE ITEM_NUMBER ='$row[ID]'";
$res_active_accounts = mysql_query($sql_active_accounts);
$int_total = 0;
while($row_active_accounts = mysql_fetch_row($res_active_accounts) {
    foreach($row_active_accounts as $i)
        $int_total += $i;
}
// Use $int_total for total value

如果我理解正确的话,像这样的人应该会对你有用。

试试这个

$query = mysql_query("select distinct(pgroup) from test") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
    echo $row['pgroup']."=>";       
    $query1="SELECT count(*),pname FROM `test` where pgroup='$row[pgroup]' group by pname ";
    $result1=mysql_query($query1) or die(mysql_error());
    $rows1=mysql_num_rows($result1);
    while($row_sub=mysql_fetch_array($result1)) {
        $query2 = "select * from test where pname = '".$row_sub['pname']."'";
        $res2=mysql_query($query2) or die(mysql_error().'errror here');
        $row2 = mysql_num_rows($res2);
        echo $row_sub['pname']."=".$row2."<br/>";       
    }
}