Php 如果案例条件无法正常工作,请查看表

Php 如果案例条件无法正常工作,请查看表,php,mysql,laravel-5,Php,Mysql,Laravel 5,查看表:工作不正常。 我有两张桌子 存款 撤回 如果: 当我提取一些像这个账户的钱时,A/C 101提取金额10$ 现在的结果是:减去所有账户余额 当前余额: Account no = 101 balance = 90 $ -10 $ Account no = 102 balance = 40 $ -10 $ // But 50 每个账户减去存款余额 CREATE VIEW main_balance_new as select account_no as account_no, SU

查看表:工作不正常。 我有两张桌子

存款

撤回

如果:

当我提取一些像这个账户的钱时,A/C 101提取金额10$ 现在的结果是:减去所有账户余额

当前余额:

Account no  = 101
balance = 90 $ -10 $ 
Account no  = 102 
balance = 40 $ -10 $ // But 50
每个账户减去存款余额

CREATE VIEW main_balance_new as select account_no as account_no,
 SUM(deposit_amount)-(select 
  CASE 
    WHEN withdraw_amount IS NULL THEN 0
   ELSE SUM(withdraw_amount)
  END
  from withdraws) as balance from deposits group by account_no 

如何解决此问题?

我认为您需要分别汇总存款表和取款表:

CREATE VIEW d_view AS
SELECT account_no, SUM(deposit_amount) AS deposit_sum
FROM deposits
GROUP BY account_no

CREATE VIEW w_view AS
SELECT account_no, SUM(withdraw_amount) AS withdraw_sum
FROM withdraws
GROUP BY account_no

CREATE VIEW main_balance_new AS
SELECT
    d.account_no,
    d.deposit_sum - COALESCE(w.withdraw_sum, 0) AS balance
FROM d_view d
LEFT JOIN w_view w
    ON d.account_no = w.account_no;
这个答案留下了一个可能性,即给定的帐户只出现在存款表中,而不出现在取款表中

编辑:


如果您需要一个视图,那么使用单独的视图来解决子查询问题。

您能分享这两个表的定义吗?您确定在取款中保存的数字大于0吗?它可以是0或任何整数。1349-视图的SELECT在FROM子句中包含一个子查询…您需要在此处进行子查询。没有出路。您可以将left join转换为查看表Selectd d.account\u No、COALESCEd.deposits、0-COALESCEw.Drawals、0作为选择帐户的余额、SUMdeposit\u金额作为存款组中的存款按帐户\u No左join选择帐户\u No、,按w.account.\u no=d.account.\u noYes.按w.account.\u no=d.account.\u noYes.按帐户从取款组中取款的SumDraw.\u金额……但这不仍然留给我们一个子查询吗?
CREATE VIEW d_view AS
SELECT account_no, SUM(deposit_amount) AS deposit_sum
FROM deposits
GROUP BY account_no

CREATE VIEW w_view AS
SELECT account_no, SUM(withdraw_amount) AS withdraw_sum
FROM withdraws
GROUP BY account_no

CREATE VIEW main_balance_new AS
SELECT
    d.account_no,
    d.deposit_sum - COALESCE(w.withdraw_sum, 0) AS balance
FROM d_view d
LEFT JOIN w_view w
    ON d.account_no = w.account_no;