在以下命令中对一个命令运行多个查询

时间:2020-10-27 17:50:06

标签: mysql sql

我正在研究文具管理应用程序,在那里我收到文具并签发文具。

我有两个桌子

  • tblstationerytype保持库存价值
  • tblstationerystock保留所有(已发出或已收到)交易的记录

我有一个php页面,在其中的Submit按钮上它将记录插入交易表中,并同时更新第一个表上的余额状态。我有以下代码它仅在交易表中插入值而没有更新我的代码在第一个表上的记录(余额)

  for($i=0; $i<$samplecount; $i++){
    $txntype="received";    
    $orderno=$_POST['orderno'];
    $orderdate=$_POST["orderdate"];
    $stationerytype=$_POST['stationerytype'];
    $stationeryqtyrecd=$_POST['stationeryqtyrecd'];
    $sql="INSERT INTO  tblstationerystock(txntype,orderno,orderdate,stationerytype,stationeryqtyrecd) VALUES(:txntype,:orderno,:orderdate,:stationerytype,:stationeryqtyrecd)";

    $query = $dbh->prepare($sql);
    $query->bindParam(':txntype',$txntype,PDO::PARAM_STR);
    $query->bindParam(':orderno',$orderno,PDO::PARAM_STR);
    $query->bindParam(':orderdate',$orderdate,PDO::PARAM_STR);
    $query->bindParam(':stationerytype',$stationerytype[$i],PDO::PARAM_STR);
    $query->bindParam(':stationeryqtyrecd',$stationeryqtyrecd[$i],PDO::PARAM_STR);
    $query->execute();
    
    $sql="
    UPDATE tblstationerytype s
      JOIN 
         ( SELECT stationerytype
                , SUM(CASE WHEN txntype = 'received' THEN stationeryqtyrecd ELSE -stationeryqtyrecd END) balance
             FROM tblstationerystock
            GROUP 
               BY stationerytype
         ) t 
        ON t.stationerytype = s.stationerytype
       SET s.balance = t.balance;";
    $query = $dbh->prepare($sql);
    $query->execute();

0 个答案:

没有答案