Php 如果案例条件无法正常工作,请查看表
查看表:工作不正常。 我有两张桌子 存款 撤回 如果: 当我提取一些像这个账户的钱时,A/C 101提取金额10$ 现在的结果是:减去所有账户余额 当前余额: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
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;