Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较两个DB表并隐藏现有项_Php_Mysql_Filter - Fatal编程技术网

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

Php 比较两个DB表并隐藏现有项,php,mysql,filter,Php,Mysql,Filter,我正在创建购物车,但我遇到了一个问题:当有人订购商品时,如果该商品已经购买,我需要从存储在表items中的打印的MySQL DB items列表中隐藏该商品。其他用户不能将此项目添加到购物车中,如果有人已经这样做并购买了它。购买的物品存储在其他MySQL表订单中。因此,我们需要比较这两个表,并从订购的货物清单中筛选这些项目。有什么建议吗?你可以这样做: SELECT * FROM items WHERE item_id NOT IN (SELECT item_id FROM orders);

我正在创建购物车,但我遇到了一个问题:当有人订购商品时,如果该商品已经购买,我需要从存储在表items中的打印的MySQL DB items列表中隐藏该商品。其他用户不能将此项目添加到购物车中,如果有人已经这样做并购买了它。购买的物品存储在其他MySQL表订单中。因此,我们需要比较这两个表,并从订购的货物清单中筛选这些项目。有什么建议吗?

你可以这样做:

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

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

您的结构可能需要修改。库存系统通常的结构方式是,有一个items表,该表有一个quantity int type列。此列应包含可用库存量。然后,您应该填写该数字以匹配您的库存。如果有人买了这个东西,你应该扣除他们买的金额。这样,您就不必为库存中的每件商品创建新行。在UI中,您应该显示库存。数量栏大于0的项目

我同意这一点。这样看起来更灵活,所以您不必因为有两个完全相同的项而在items表中有两个条目。