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

如果可能,创建一个单独的 item_cart 表,其中 (cart_id, item_id, product_id) 作为主键。从这里您可以通过 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 回答