0

使用されているデータベース構造は実際にはこれに役立たないようですが、私は各カテゴリの製品販売の総数を取得しようとしています。

購入したばかりのカテゴリ(別のテーブル)(さらに別のテーブル)の製品(独自のテーブル)の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 )

これは、3つのアイテムが販売され、それらの回数販売されたという点で正しいです。そして、array_sumはこれでは機能しません。私はそれらの数を合計するために何もすることができないようです。私は特定の行だけを数えようとしていますが、最終的な結果を得るためにそれらの行のデータは気にしません。

ループ内のSQL呼び出しは悪い考えだと理解していますが、これは頻繁に実行されない管理領域スクリプトです。

4

2 に答える 2

0
$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

私があなたを正しく理解していれば、このようなものはあなたのためにトリックを行うはずです.

于 2012-09-05T06:43:53.843 に答える
0

これを試して

$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/>";       
    }
}
于 2012-09-05T09:09:16.503 に答える