无法将 table 中的值更新为 mysql 中的另一个 table
Unable to update values from one table to another table in mysql
分类帐Table
ledger_id ledger_name dep_id dr_bal cr_bal
1 Purchase 2 NUll NUll
交易Table
trans_id trans_date ledger_id ledger_name amount trans_type
1 3/2/2004 1 Purchase A/C 84500 dr
2 3/12/2004 6 Cash A/C 20000 cr
这些是我的 table、Ledgers
和 Transactions
。
我想从 transactions.amount
更新 ledgers.dr_bal
,
基于 ledger_id
,即 ledgers
table 中的 primary key
。
想要根据 trans_type ='dr'
将值从 transactions.amount
复制到 dr_bal
到目前为止我已经尝试过,
UPDATE ledgers
SET dr_bal =(select sum(If(tbl_transactions.trans_type = 'dr' AND transactions.ledger_id = 1), amount,0) FROM transactions)
where ledgers.ledger_id =1;
但是我无法 运行 上面的查询,因为它在末尾的 Where
子句处抛出错误。
已尝试在此处调查与更新 table 相关的各种问题。但是我真的卡住了。
试试这个查询!
UPDATE ledgers
LEFT JOIN
(SELECT
SUM(amount) soa, ledger_id
FROM
tbl_transactions
WHERE
tbl_transactions.trans_type = 'dr'
AND tbl_transactions.ledger_id = 1) t ON (ledgers.ledger_id = t.ledger_id)
SET
ledgers.dr_bal = coalesce(t.soa, 0);
如果您想用交易金额更新所有分类帐,请删除条件 tbl_transactions.ledger_id = 1
并在子查询中引入 GROUP BY tbl_transactions.ledger_id
。
分类帐Table
ledger_id ledger_name dep_id dr_bal cr_bal
1 Purchase 2 NUll NUll
交易Table
trans_id trans_date ledger_id ledger_name amount trans_type
1 3/2/2004 1 Purchase A/C 84500 dr
2 3/12/2004 6 Cash A/C 20000 cr
这些是我的 table、Ledgers
和 Transactions
。
我想从 transactions.amount
更新 ledgers.dr_bal
,
基于 ledger_id
,即 ledgers
table 中的 primary key
。
想要根据 trans_type ='dr'
transactions.amount
复制到 dr_bal
到目前为止我已经尝试过,
UPDATE ledgers
SET dr_bal =(select sum(If(tbl_transactions.trans_type = 'dr' AND transactions.ledger_id = 1), amount,0) FROM transactions)
where ledgers.ledger_id =1;
但是我无法 运行 上面的查询,因为它在末尾的 Where
子句处抛出错误。
已尝试在此处调查与更新 table 相关的各种问题。但是我真的卡住了。
试试这个查询!
UPDATE ledgers
LEFT JOIN
(SELECT
SUM(amount) soa, ledger_id
FROM
tbl_transactions
WHERE
tbl_transactions.trans_type = 'dr'
AND tbl_transactions.ledger_id = 1) t ON (ledgers.ledger_id = t.ledger_id)
SET
ledgers.dr_bal = coalesce(t.soa, 0);
如果您想用交易金额更新所有分类帐,请删除条件 tbl_transactions.ledger_id = 1
并在子查询中引入 GROUP BY tbl_transactions.ledger_id
。