如何将一个表中的值与另一表中的帐号相加?

问题描述 投票:0回答:1

我是 Python 的初学者/中级用户,我现在正在尝试构建一个会计程序,以了解有关数据库及其交互方式的更多信息。

我目前有三个不同的 sqlite3 表:ListOfAccounts、GeneralLedger 和 EventLedger。

  • ListOfAccounts 包含 6 列,分别为 account_nr、account_name、account_type、debit、credit 和balance。
  • GeneralLedger 包含 3 列,分别名为entry_id(主键)、entry_date 和description。
  • EventLedger 包含 5 列,分别为 Primary_id(主键)、entry_id(与 GeneralLedger 相关的外键)、account_nr、借方和贷方。

当您输入一笔新交易时,GeneralLedger 中会有一个条目,然后 EventLedger 中会有多个与 GeneralLedger 中的条目相关的条目,这些条目会分散不同账户之间的交易金额。

现在说说我的问题。在 ListOfAccounts 的借方和贷方列中,我想按 account_nr 对 EventLedger 中的交易进行求和,但无论我尝试什么,我似乎都无法使其正常工作。

如果没有导致错误,则 ListOfAccounts 中的贷方和借方列仍为 0(零)。

有人知道如何解决这个问题吗?

我得到的最接近的解决方案是下面的代码。尽管这只是在 ListOfAccounts 表中返回 0.0。

SELECT L.account_name, SUM(E.debit) AS Balance
FROM EventLedger E 
JOIN ListOfAccounts L ON L.account_nr = E.account_nr_E
GROUP BY L.account_name

帐户列表列:

CREATE TABLE IF NOT EXISTS
ListOfAccounts(
account_nr INTEGER,
account_name TEXT,
account_type TEXT,
debit REAL NOT NULL, 
credit REAL NOT NULL,
balance REAL NOT NULL);

EventLedger 列:

CREATE TABLE IF NOT EXISTS
EventLedger(
primary_id INTEGER NOT NULL PRIMARY KEY,
entry_id INTEGER,
account_nr_E INTEGER,
debit REAL,
credit REAL);

我想要发生的事情如下:

EventLedger 包含多个条目。 Primary_id Entry_id account_nr_E 借方 贷方 1 1 1001 5000 2 1 4001 5000 3 2 1001 550 4 2 5001 550 5 3 1001 15000 6 3 3010 15000

ListOfAccounts 包含 EventLedger 中帐户的总和。 account_nr account_name account_type 借方 贷方 1001 检查根据。资产 15000 5550 3010 销售收入 15000 4001 汽车费用。成本5000 5001 水电费 550

python sql sqlite
1个回答
0
投票

我可以看到您的查询的问题是您按

L.account_name
进行分组,但您正在对
E.debit
进行求和。这意味着您将获得所有同名账户的借方总额。但是,如果您想获得每个帐户的借方总额,则需要按
E.account_nr_E
进行分组。

更新了sql查询:

SELECT L.account_name, SUM(E.debit) AS Balance
FROM EventLedger E
JOIN ListOfAccounts L 
ON L.account_nr = E.account_nr_E
GROUP BY E.account_nr_E
© www.soinside.com 2019 - 2024. All rights reserved.