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

rbl8hiat  于 12个月前  发布在  SQLite
关注(0)|答案(1)|浏览(121)

我是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、debit和credit。

当你输入一个新的交易时,在总帐中有一个条目,然后在事件分类账中有多个条目与总帐中的条目相关,这些条目将交易金额分散在不同的账户之间。
现在来说说我的问题在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

ListOfAccounts列:

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包含多个条目。
| 主ID|条目ID|帐户编号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中的帐户总和。
| 帐户编号|帐户名|帐户类型|借记|信用|
| --|--|--|--|--|
| 1001 |检查acc.|资产| 15000 | 5550 |
| 3010 |销售|收入|| 15000 |
| 4001 |汽车出口|成本| 5000 ||
| 5001 |实用|成本| 550 ||

tyky79it

tyky79it1#

我可以看到你的查询的问题是,你是按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

相关问题