Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
Mysql 更新计算值时返回NULL的联接嵌套子查询_Mysql_Sql - Fatal编程技术网

Mysql 更新计算值时返回NULL的联接嵌套子查询

Mysql 更新计算值时返回NULL的联接嵌套子查询,mysql,sql,Mysql,Sql,我试图解决“您不能在FROM子句中指定更新的目标表”MySQL错误,这意味着我有一个嵌套的子查询(临时表)。注意,在我进入实际的更新之前,我正在尝试让选择工作 我得到的是一个分类账表,在该表中,我试图使用活动单位(该行的开头)和活动单位中的每一个额外调整(同一表中有一个付款行和多个调整行,通过佣金ID和计划编号关联)查找关联行的计算单位总数。它们按month\u num分组。因此,如果它是active\u units=18,并且有三个调整行,一个是active\u units\u chg=-2,

我试图解决“您不能在FROM子句中指定更新的目标表”MySQL错误,这意味着我有一个嵌套的子查询(临时表)。注意,在我进入实际的
更新之前,我正在尝试让
选择
工作

我得到的是一个分类账表,在该表中,我试图使用
活动单位
(该行的开头)和活动单位中的每一个额外调整(同一表中有一个付款行和多个调整行,通过佣金ID和计划编号关联)查找关联行的计算单位总数。它们按
month\u num
分组。因此,如果它是
active\u units=18
,并且有三个调整行,一个是
active\u units\u chg=-2
,那么我应该以
18+-2=16
结束

当我这样做时:

SELECT
   active_units
 , active_units_chg
 , active_units_total
 , CRM_commission_payments.active_units + (
    SELECT SUM(active_units_chg)
    FROM CRM_commission_payments AS cp
    WHERE cp.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
    AND cp.schedule_a_no = CRM_commission_payments.schedule_a_no
    AND cp.month_num = CRM_commission_payments.month_num
    AND cp.item_active = 1
) AS active_units_cal1
FROM CRM_commission_payments
WHERE CRM_commission_payments.payment_type = 'payment'
AND CRM_commission_payments.CRM_quotes_item_id = 2457
active\u units\u cal1
对于该行是正确的。但是,当我使用嵌套的
JOIN
'd子查询执行此操作时,对于
active\u units\u calc.calc\u chg
,我会得到
NULL

SELECT
   active_units
 , active_units_chg
 , active_units_total
 , CRM_commission_payments.active_units + (
    SELECT SUM(active_units_chg)
    FROM CRM_commission_payments AS cp
    WHERE cp.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
    AND cp.schedule_a_no = CRM_commission_payments.schedule_a_no
    AND cp.month_num = CRM_commission_payments.month_num
    AND cp.item_active = 1
) AS active_units_cal1
 , active_units_calc.calc_chg
FROM CRM_commission_payments
LEFT JOIN  (
     SELECT
        source.calc_chg
      , source.CRM_commissions_item_id
      , source.schedule_a_no
      , source.month_num
     FROM CRM_commission_payments AS cp1
     INNER JOIN (
          SELECT
             SUM(active_units_chg) AS calc_chg
           , cp.CRM_commissions_item_id
           , cp.schedule_a_no
           , cp.month_num
          FROM CRM_commission_payments AS cp
          WHERE cp.item_active = 1
     ) AS source
     WHERE source.CRM_commissions_item_id = cp1.CRM_commissions_item_id
     AND source.schedule_a_no = cp1.schedule_a_no
     AND source.month_num = cp1.month_num
) AS active_units_calc ON (
   active_units_calc.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
   AND active_units_calc.schedule_a_no = CRM_commission_payments.schedule_a_no
   AND active_units_calc.month_num = CRM_commission_payments.month_num
)
WHERE CRM_commission_payments.payment_type = 'payment'
AND CRM_commission_payments.CRM_quotes_item_id = 2457

我做错了什么?

由于顶部按预期工作,如果拉出左连接查询,它是否也会返回预期结果?它似乎是挂起的地方。不管联接子查询是否存在,字段子查询都可以工作。连接子查询是我真正需要的工作。