2

現在、私のMySQLデータは以下のように保存されています

product             | total
------------------------------------------
puma,adidas         | 100.00,125.00     
puma                | 80.00
reebok,adidas,puma  | 70.00,100.00,125.00
adidas,umbro        | 125.00,56.00      

PHPでこのように結合、分解、マージ、合計するにはどうすればよいですか?

puma     485.00
adidas   350.00
reebook  70.00
umbro    56.00
4

2 に答える 2

2

あなたのデータ構造について簡単な質問があります:なぜあなたのデータ構造はそのようなものですか?

そうは言っても、データの正規化 (重複データの回避)、注文に属する項目の作成、製品テーブルなどを検討してください...

products
--------
id
name
price


orders
------
id
created


order_items
------------
id
order_id
product_id
quantity

これで、注文の上位 5 つの最大合計を取得するなどのクエリを実行できます。私が販売している最も人気のあるアイテムは何ですか? この製品の名前を変更させてください。ただし、データ全体がバラバラになることはありません。

于 2010-04-27T16:14:00.680 に答える
1

結果セットがどのように見えるかはわかりませんが、ロジックは同じである必要があります。

$combined = array();
foreach ($results as $result) {
    $productsArr = split(",", $result['product']);
    $totalsArr = split(",", $result['total']);

    // we'll assume both arrays are always the same size
    $prodCount = count($productsArr);
    for($i = 0; $i < $prodCount; $i++) {
        $combined[$productsArr[$i]] += (float)$totalsArr[$i];
    }
}
print_r($combined);
于 2010-04-27T16:06:14.957 に答える