比较两个DB表并隐藏现有项

时间:2012-03-19 13:34:01

标签: php mysql filter

我正在创建购物车,我遇到一个问题:当有人订购商品时,如果此商品已经购买,我需要将该商品隐藏在打印的MySQL数据库商品列表中(存储在表items中) 。 (其他用户无法将此项目添加到购物车中,如果有人已经提前购买过它。)购买的商品存储在其他MySQL表orders中。所以不知何故需要比较这两个表并从订购的商品清单中筛选出这些商品。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

你可以这样做:

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

答案 1 :(得分:0)

Travesty的答案,使用子查询很好。另一种方法是使用连接:

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

答案 2 :(得分:0)

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