2012-03-19 84 views
0

我正在创建购物车,并遇到一个问题:如果某人订购某个项目,我需要将该项目从打印的MySQL DB项目列表中隐藏(存储在表items中)物品已被购买。 (如果其他用户不能将此项添加到购物车,如果有人已经这样做了,并购买了它。)购买的项目存储在其他MySQL表orders。所以不知何故需要比较这两个表格,并从订购的商品清单中过滤这些项目。任何建议?比较两个数据库表并隐藏现有项目

回答

0

你可以做这样的事情:

SELECT * FROM items WHERE item_id NOT IN (SELECT item_id FROM orders); 
0

滑稽模仿的答案,使用子查询是好的。另一种方法是使用连接:

SELECT items.* FROM items 
LEFT OUTER JOIN orders 
ON items.item_id = orders.item_id 
WHERE orders.item_id IS NULL -- only those which had no join 
0

您的结构可能需要修订。库存系统通常构造的方式是存在具有数量(int类型)列的项目表。此栏应包含可用库存量。您应该填写该号码以符合您的库存。如果有人购买这个物品,你应该扣除他们购买的金额。通过这种方式,您不必为存货中的每件商品创建一个新行。在您的用户界面中,您应该显示库存中的库存。 (数量栏大于0的项目)

+0

我同意这一点。这种方式似乎更加灵活,所以你不必因为你有两个相同的确切项目而在你的'items'表中有两个条目。 – Travesty3 2012-03-19 13:47:26