1

注文されたすべてのアイテムをカウントする SUM を使用するスクリプトがあるため、製品 1 は 6 回、製品 2 は 9 回注文されています。別のテーブル (orderid を取得する場所) に、ボーナス コードがある場合があります。このボーナス コードが製品 (他の表から確認) である場合、それもカウントに追加する必要があります。

説明するのはかなり奇妙です。これが私のコードです。

$query = "SELECT productid, SUM(quantity) FROM `order` GROUP BY productid"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    $prodname = fetchproductname($row[productid]);
    echo $prodname ." - ". $row['SUM(quantity)'];
    echo "<br />";
}

これらの結果をすべて保存し、ボーナス コードをクエリして、アイテム番号 (存在する場合) を取得し、それを合計に追加する方法があるかどうかを知る必要があります。while ステートメントを使用していくつかの異なるクエリと方法を試しましたが、うまくいきません。

私は4つのテーブル、注文(製品IDと数量など)、製品(製品名を含む)、ディスパッチ(ボーナスコードを含む)、ボーナス(製品IDを含む)を使用しています

サンプルデータ http://i.imgur.com/lZnba.png

4

2 に答える 2

1

複雑さを見逃しているかもしれませんが、製品ループ内からボーナス コードをクエリするだけでよいようです。

while($row = mysql_fetch_array($result)){
    $prodname = fetchproductname($row[productid]);
    $productCount = $row['SUM(quantity)'];
    // Now query the bonus codes (you can come up with a better query probably, but this gives the idea)
    $sql = "SELECT COUNT(bonus_code) bonus_count FROM dispatch d WHERE EXISTS (SELECT * FROM bonus b WHERE b.code = d.bonus_code AND b.productid = $productId)";
    $bonusresult = mysql_query($sql) or die(mysql_error());
    if ($bonusRow = mysql_fetch_array($bonusresult)) {
        $productCount += $bonusRow['bonus_count'];
    }
    echo $prodname ." - ". $productCount;
    echo "<br />";
}
于 2012-11-14T12:36:37.847 に答える
0

質問が理解できれば、結果を連想配列に格納するだけで済みます。結果が得られたら:

$product_array = array();
foreach($result as $row)
{
    $prodname = fetchproductname($row[productid]);
    $product_array[$prodname] = $row['SUM quantity'];
}

次に、Bonus テーブルを同じ方法で繰り返し処理し、見つかったボーナスごとに、関連する配列に 1 つ追加します。

[...]
if(isset($product_array[$bonus_product_name]))
    {
    $product_array[$bonus_product_name] = $product_array[$bonus_product_name] + 1;
    }
else
    {
    $product_array[$bonus_product_name] = 1;
    }

最後に、product 配列を繰り返し処理して値を出力します。

$keys = array_keys($product_array);
foreach($keys as $key)
    {
    echo("$key - $product_array[$key]");
    }
于 2012-11-14T12:40:23.893 に答える