如何在 MySQL 中使用嵌套查询完成订购数量之前的 SELECT 和 INSERT

问题描述

Database Sample Picture

继续查看上图,我想运行查询直到满足 $orderQty。图中上表为products,下表为temp_salesee,这是运行我的代码后的结果。
这是我的代码:

    $orderQty = 22;
    $trID     = round(microtime(true) * 1000);
    $proID    = 1;

$con->begin_transaction();
$stmt = $con->prepare("
INSERT INTO `temp_salesee` (
    SELECT
         null,$trID,`pid`,`pur_price`,(CASE
                WHEN qty_avbl <= $orderQty THEN qty_avbl
                WHEN qty_avbl >= $orderQty THEN $orderQty
                else 0
            END),`batch_number`
        FROM `products`
        WHERE `pid` = ?
        ORDER BY `batch_number` ASC
)
        ");

$stmt->bind_param('s',$proID);
$stmt->execute();
$con->commit();

在第 3 行的 temp_salesee 中,qty 应为 2,这样总计 qty 将等于 $orderQty 此时查询应停止,第 4、第 5 行不应被插入。如果 $orderQty 小于 qty_avbl,如 products 表的第一行所示,则只有第一行应插入 temp_salesee 表中,其中 qty 5.
谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)