我正在尝试创建一个简单的库存请求系统。用户可以输入将查询库存数据库的多个SKU。
我的问题是我要做的是将这些多个查询关联到一种列表中。稍后可以检索此列表并包含同时提交的所有查询。填写完列表后,可以将其删除。
这可能吗?我只是想指出正确的方向。
由于
答案 0 :(得分:1)
如果我正确理解了问题,那么当有人在表中搜索多个SKU时,您正在寻找查询来检索数据。那是对的吗?如果是,请参阅下面的查询。
SELECT some_data FROM some_table WHERE sku IN ('SSDF3','GHG56',...'HG09');
答案 1 :(得分:1)
您需要将该表与数据库中的另一个表相关联,其中它将是一个多对多表,根据与SKU匹配的外键连接库存表和类型列表。
YOU CAN QUERY THE FOLLOWING
SELECT inventory.* FROM inventory LEFT JOIN InvLinkedList ON InvLinkedList.SKU = Inventory.SKU WHERE InvLinkedList.typeID = 2
您需要具有包含所有项目的库存表,具有ID和类型作为列的InventoryType表以及将TABLE InvLinkedList与两个索引列(SKU和TYPE ID)连接的MANY TO MANY。您将需要定义这些表的关系,其中ON DELETE,它将在类型列表上CASCADE。因此,当您删除类型时,它将删除InvLinkedList中具有typeID的行,但不会删除Inventory中的项目。使用SKU删除项目时会发生相反的情况。
我希望这将成为解决方案。对于多种类型,您可以创建一个PHP函数来返回上面提到的具有已定义类型的查询。
答案 2 :(得分:0)
制作一个这样的表:
ListNumber SKU
1 5423
1 5432
1 6542
1 6543
2 5411
3 6542
3 5411
3 5423
然后通过执行以下操作简单地检索列表1的SKU:
SELECT SKU FROM Table WHERE ListNumber=1;
答案 3 :(得分:0)
您可以使用(listNo,SKU,TimeStamp)表结构。时间戳将帮助您分析查询和查询库存的方式和时间。
答案 4 :(得分:0)
我可以在这看到你想要的东西。您希望确保您有多个插入,并以某种方式确保它们具有与每个事务关联的某种一致ID。如果采用时间戳方法,则无法保证它们都将在同一秒内插入。
在MySQL中同时插入行是非常困难的,但我确实有一个可行的建议。我想你应该开始一个事务,找到下一个最高的ID号,然后插入所有这些行。
$transRes = mysql_query("START TRANSACTION");
$nextListRes = mysql_query("SELECT max(listNumber) FROM InventoryRequests");
$nextListRes
获取结果并添加1。INSERT
对SKU的查询。$commitRes = mysql_query("COMMIT");
您希望确保这是一个事务而不是两个单独的查询,因为竞争条件可能存在,其中您运行的PHP代码的两个实例可能同时SELECT
(非常糟糕!)。 / p>
另外,我正在考虑使用子查询的方法来实现它,但是这会使每个INSERT
语句在每次执行时都有不同的MAX(listNumber)
,这意味着他们赢了“ t具有您想要的相同ID。您可能希望查看INSERT
的预准备语句,如果您需要它们更快一点:)
答案 5 :(得分:0)
不确定我是否理解,但听起来您正在尝试构建购物车或基本订单履行系统?
如果是这种情况,或许可以创建另一个表来存储“订单”和逗号分隔列表(类似于Sjoerd的答案,但您不必担心预先确定列表ID)SKU可以在以后使用注入IN()子句(根据gsharma)。随后可以删除“订单”,或将其标记为非活动或类似的东西。