Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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/MYSQL-使用union更新子查询select_Php_Mysql - Fatal编程技术网

PHP/MYSQL-使用union更新子查询select

PHP/MYSQL-使用union更新子查询select,php,mysql,Php,Mysql,我在这里得到了我的查询,用于使用union显示现有数量,以便我可以得到结果ALINVTY3是我的主文件,我想根据我的联合结果更新我的项目数量。是否可以根据变量输出更新myallinvty3$total **My table :** |allinvty3|(masterfile) ---------------- |in_code | |ecr_desc | |pric_cash |qty

我在这里得到了我的查询,用于使用union显示现有数量,以便我可以得到结果ALINVTY3是我的主文件,我想根据我的联合结果更新我的项目数量。是否可以根据变量输出更新myallinvty3$total

 **My table :**


     |allinvty3|(masterfile)
      ----------------
      |in_code       |
      |ecr_desc      |
      |pric_cash  
      |qty           |
      |ite_desc      |
      ---------------

|barcode, branchtobranch,adjustment table(all tables have same fieldnames) |
      ----------------
      |itemcode      |
      |qty           |
      |status        |
      ---------------
这是我的Union all的示例输出,我希望获得数据并能够更新我的主文件allinvty3中的数量

$sql = "UPDATE allinvty3 as A, (
    select 
        ite_desc,ecr_desc, pric_cash, t.itemcode as itemcode ,sum(t.qty) as qty
    from ( 
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from barcode as bc inner JOIN allinvty3 as ait on bc.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from branchtobranch_tb as bb inner JOIN allinvty3 as ait on bb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,    pric_cash, itemcode,qty from adjustment_tb as adt inner JOIN allinvty3 as ait1 on adt.itemcode = ait1.in_code where adt.status='APPROVED'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from stockreturn_tb as sb inner JOIN allinvty3 as ait on sb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from notinclude_tb as nt inner JOIN allinvty3 as ait on nt.itemcode = ait.in_code where nt.status='COMPLETE'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from purchase_tb as pt inner JOIN allinvty3 as ait on pt.itemcode = ait.in_code 
        union all
        select ite_desc,ecr_desc,   pric_cash, itemcode,(qty * -1) from soldout_dm as slp inner JOIN allinvty3 as ait2 on slp.itemcode = ait2.in_code
    ) as t
  ) as  UD
SET
    A.sa_onhand = UD.qty
WHERE
    A.in_code = UD.itemcode";



$result = $conn->query($sql);
这是我的Union all的示例输出,我希望获得数据并能够更新我的主文件allinvty3中的数量

$sql = "UPDATE allinvty3 as A, (
    select 
        ite_desc,ecr_desc, pric_cash, t.itemcode as itemcode ,sum(t.qty) as qty
    from ( 
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from barcode as bc inner JOIN allinvty3 as ait on bc.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from branchtobranch_tb as bb inner JOIN allinvty3 as ait on bb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,    pric_cash, itemcode,qty from adjustment_tb as adt inner JOIN allinvty3 as ait1 on adt.itemcode = ait1.in_code where adt.status='APPROVED'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from stockreturn_tb as sb inner JOIN allinvty3 as ait on sb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from notinclude_tb as nt inner JOIN allinvty3 as ait on nt.itemcode = ait.in_code where nt.status='COMPLETE'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from purchase_tb as pt inner JOIN allinvty3 as ait on pt.itemcode = ait.in_code 
        union all
        select ite_desc,ecr_desc,   pric_cash, itemcode,(qty * -1) from soldout_dm as slp inner JOIN allinvty3 as ait2 on slp.itemcode = ait2.in_code
    ) as t
  ) as  UD
SET
    A.sa_onhand = UD.qty
WHERE
    A.in_code = UD.itemcode";



$result = $conn->query($sql);
更新时出错,就像下面的建议一样,尽管我的所有字段都是正确的


注意:尝试获取非对象的属性

我想您可以这样做:

UPDATE allinvty3 A, (
    select 
        ite_desc,ecr_desc, pric_cash, t.itemcode  as itemcode ,sum(t.qty) as qty
    from ( 
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from barcode as bc inner JOIN allinvty3 as ait on bc.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from branchtobranch_tb as bb inner JOIN allinvty3 as ait on bb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,    pric_cash, itemcode,qty from adjustment_tb as adt inner JOIN allinvty3 as ait1 on adt.itemcode = ait1.in_code where adt.status='APPROVED'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from stockreturn_tb as sb inner JOIN allinvty3 as ait on sb.itemcode = ait.in_code
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from notinclude_tb as nt inner JOIN allinvty3 as ait on nt.itemcode = ait.in_code where nt.status='COMPLETE'
        union all
        select ite_desc,ecr_desc,  pric_cash,   itemcode,qty  from purchase_tb as pt inner JOIN allinvty3 as ait on pt.itemcode = ait.in_code 
        union all
        select ite_desc,ecr_desc,   pric_cash, itemcode,(qty * -1) from soldout_dm as slp inner JOIN allinvty3 as ait2 on slp.itemcode = ait2.in_code
    )
    group by itemcode order by ecr_desc  ASC
) UD 
SET
    A.qty = UD.qty
WHERE
    A.itemcode = UD.itemcode

MySQL或中SELECT的更多更新。

请共享您的表结构和示例数据。@TeKo,我刚刚共享了数据。我会尝试的。谢谢你的帮助,我相信qyu是错别字对吗@我真的很感激你的回答,但有一个错误“试图获得非对象的属性”。虽然我的字段名是正确的:(