Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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 按1从顶部1更新SQL条目_Php_Mysql - Fatal编程技术网

Php 按1从顶部1更新SQL条目

Php 按1从顶部1更新SQL条目,php,mysql,Php,Mysql,我有一个库存表,它是: Warehouse item vendor quantity expiration_date US0001 i1 v1 20 2017-07-06 US0001 i1 v2 35 2017-12-12 US0001 i1 v3 10 2017-12-12 我需要遵循以下政策才能取出物品: 先拿过期最早的物品 如果有效期相同,则取数量最小的项目 如果我取出60项i1,那么我会先用20

我有一个库存表,它是:

Warehouse item vendor quantity expiration_date
US0001    i1   v1     20       2017-07-06
US0001    i1   v2     35       2017-12-12
US0001    i1   v3     10       2017-12-12
我需要遵循以下政策才能取出物品:

  • 先拿过期最早的物品
  • 如果有效期相同,则取数量最小的项目
  • 如果我取出60项i1,那么我会先用20减去第1行,然后用10减去第3行,然后用第2行减去20。然后删除0个条目

    更新后的表如下所示:

    Warehouse item vendor quantity expiration_date
    US0001    i1   v2     15       2017-12-12
    
    我想知道,作为SQL查询,我们如何才能做到这一点

    另外。我在一个网站上做这件事。因此,php也可以作为一种工具提供帮助


    谢谢大家!

    单次查询是不可能的。您必须使用多个查询以迭代方式执行此操作。我们可以使用order by选择这些顺序中的那些。但我们如何才能按此顺序更新?启动一个事务,选择带有
    的记录进行更新
    锁定,然后开始提取行并使用新计数更新它们。一旦你完成了。您可以提交()并继续。这是sql server吗?也许一个存储过程不可能通过单个查询实现。您必须使用多个查询以迭代方式执行此操作。我们可以使用order by选择这些顺序中的那些。但我们如何才能按此顺序更新?启动一个事务,选择带有
    的记录进行更新
    锁定,然后开始提取行并使用新计数更新它们。一旦你完成了。您可以提交()并继续。这是sql server吗?也许可以使用存储过程