我已经阅读了关于REPLACE和INSERT ON DUPLICATE键查询的信息,虽然我可以看到它们很有用,但它们似乎无法满足我的目的。也许我的数据库设计偏离了应有的方式,但是无论哪种方式,我都希望我能使它正常工作。
我正在尝试建立一个网上商店来自学mysql和php,并且正在记录一个会话ID,以便将个人购物车拉回以进行个人访问,并尝试将存货写入我遇到问题的购物车中正在尝试检查商品是否在购物车中。我希望每个用户的每个商品都是唯一的,但是对于整个表格来说,每个商品都不应该唯一,否则这将阻止多个用户购买同一商品,不是吗?
到目前为止,我的表如下所示:
| Cart ID(key) | USER_ID(fk) | ItemNum | ItemQTY |
我本质上是想查看USER_ID的购物车中是否已经有> 0的ItemNum ItemQTY。如果他们愿意,我希望itemQTY更新为itemQTY +,但是他们添加了很多,如果没有,则插入新行。
为此,我必须先查询吗?
最佳答案
传统的购物车软件每位用户只有一个购物车,每当用户返回时,该购物车都会恢复。因为您同时具有CartID
和UserID
,所以给人的印象是用户可以拥有多个购物车。
鉴于最好有三个表。 Users
,Carts
和CartItems
Users
将需要一个UserID
,Carts
将需要CartID
和类似OwnerID
(引用Users.UserID
)的东西,并且CartItems
将具有CartID
(引用Carts.CartID
),ItemID
和Quantity
。
您甚至可以变得更简单,因为一个用户只能拥有一个购物车,因此您可以完全忽略购物车表,并将CartItems.CartID
替换为CartItems.OwnerID
(引用Users.UserID
。
我希望这是有帮助的。