Php 如何从mysql_fetch_行中合并多行计数

Php 如何从mysql_fetch_行中合并多行计数,php,mysql,arrays,Php,Mysql,Arrays,我试图获得每个类别的产品销售总数,尽管所使用的数据库结构似乎并不适用于此 我已经到了这样一个地步:我有一个类别(另一个表)中的产品ID(它自己的表),而这个类别(另一个表)只是购买的(还有另一个表)。因此,在类别中循环,我选择orders表中的ID并尝试计数行。我以每个项目的项目计数结束,但任何我尝试合并和计算它们的方法都不起作用 $SQL = "SELECT * from PRODUCTS WHERE CATEGORY LIKE '%-$thiscat-%' AND STATUS = 'Act

我试图获得每个类别的产品销售总数,尽管所使用的数据库结构似乎并不适用于此

我已经到了这样一个地步:我有一个类别(另一个表)中的产品ID(它自己的表),而这个类别(另一个表)只是购买的(还有另一个表)。因此,在类别中循环,我选择orders表中的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 )
这是正确的,因为有三件东西卖了,卖了那么多次。 数组_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/>";       
    }
}
$query=mysql\u query(“从测试中选择distinct(pgroup))或die(mysql\u error());
while($row=mysql\u fetch\u array($query)){
echo$row['pgroup']。“=>”;
$query1=“选择计数(*),pname来自'test',其中pgroup='$row[pgroup]'按pname分组”;
$result1=mysql\u query($query1)或die(mysql\u error());
$rows1=mysql\u num\u行($result1);
while($row\u sub=mysql\u fetch\u数组($result1)){
$query2=“从测试中选择*,其中pname=”$row_sub['pname']。“”;
$res2=mysql\u query($query2)或die(mysql\u error().'error here');
$row2=mysql\u num\u行($res2);
echo$row_sub['pname'].“=”$row2.“
”; } }
mysql\u query我发誓有人使用的每一个问题都有一个巨大的问题。请不要使用这个过时的界面,因为你可能会做错事,并遭受严重后果。在
mysqli
或PDO中学习使用占位符并不需要很长时间,如果您这样做,将来将为您节省很多麻烦。