6

ショッピング サイトのコーディング中に、製品在庫を更新する必要があります。しかし、当然のことながら、ショッピング カートには同じアイテムが数回含まれる可能性があります。それを更新するための最良の方法は何ですか?

試してみINましたが、次の SQL クエリは 3 つのアイテムを返します。

SELECT * 
FROM  `products` 
WHERE id
IN ( 3, 4, 4, 6 ) 
LIMIT 0 , 30

これが私の解決策ですが、これが最善の解決策だとは思いません。

$cart = array(1,3,4,4,5,8,22,22);
$itemlist = array_count_values($cart);

foreach($itemlist as $itemid=>$ocurrence){
    $SQL = "UPDATE products SET stock = stock-".$ocurrence." WHERE id = ".$itemid;
    mysql_query($SQL);
}
4

2 に答える 2

1

次のようなことができます。

SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 2

このリンクを確認してください: MySQL テーブル -> 同じクエリで同じ行を複数回返すことができますか?

于 2012-09-04T13:26:47.310 に答える
0

可能であれば、主キーとして(cart_id、item_id、product_id)を持つ別のitem_cartテーブルを作成します。ここから、product_idでグループ化して、販売された製品の数を確認できます。

select product_id, count(product_id) as "No of Product Sold" from item_cart
group by product_id

あなたのphpコードは在庫のある製品を完全に更新しません。

可能であれば、商品が販売されるたびに、更新在庫列のトリガーを設定してみてください。

于 2012-09-05T09:44:25.827 に答える