我有以下三个表
表acc_chart_of_accounts被所有用户用作名义账户的入门名单,表chart_of_sub_accounts包含用户添加的任何新名义账户。表acc_posting_details包含账户交易条目。 目标是使用acc_chart_of_accounts表作为基础显示名义帐户列表,并使用每个名义代码的总和添加用户创建的任何其他名义代码,所有这些代码都由company_id过滤。 为此,我尝试了以下内容:
我已经获取了acc_chart_of_accounts表和acc_chart_of_sub_accounts表,并将以下查询应用于下面的两个表。
acc_chart_of_accounts
nominal_acc_no coa_name
10 Freehold property cost
20 Freehold property depreciation
110 Leasehold property cost
120 Leasehold property depreciation
210 Plant and machinery cost
acc_chart_of_sub_accounts
nominal_acc_no coa_name
1200 Bank current account
这是用于列出主表 acc_chart_of_accounts 中的名义帐户以及用户设置的子表 acc_chart_of_sub_accounts 的查询...
SELECT nominal_acc_no,coa_name FROM
(
SELECT nominal_acc_no ,coa_name FROM acc_chart_of_accounts
UNION
SELECT nominal_acc_no,coa_name FROM acc_chart_of_sub_accounts
) A;
这是它给出的结果,我删除了一些结果以使事情更容易阅读,你可以看到查询采用右表acc_chart_of_sub_accounts上的名义代码条目并将其插入到列表中左表acc_chart_of_accounts虽然在列表的末尾,我想ORDER BY会对它进行排序。
因此,当用户在其帐户中添加新的名义帐户时,它会显示在主图表上,如下所示。
nominal_acc_no coa_name
10 Freehold property cost
20 Freehold property depreciation
110 Leasehold property cost
120 Leasehold property depreciation
210 Plant and machinery cost
**1200 Bank current account**
我现在需要做的是将下面的表acc_posting_details添加到mix中,我需要能够将此表链接到其他两个,以便它将任何总计余额添加到返回的结果。
post_detail_id nominal_acc_no借记贷记公司_id
1 2109 0.00 27.00 0
2 2200 4.00 0.00 0
3 7000 23.00 0.00 0
4 2109 0.00 27.00 0
5 2200 4.00 0.00 0
6 6100 23.00 0.00 0
现在,当用户查看他们的会计科目表时,他们将看到主表中的所有名义代码以及他们可能已设置的任何其他代码以及每个名义代码可能存在的任何余额。此查询将不得不由company_id过滤,它将来自$ _SESSION值。
以下是我使用以下代码生成的查询结果:
SELECT
`acc_chart_of_accounts`.`nominal_acc_no`
, `acc_chart_of_accounts`.`coa_name`
, SUM(`acc_posting_details`.`debit`) AS `dabit`
, SUM(`acc_posting_details`.`credit`) AS `credit`
, `acc_posting_details`.`company_id`
FROM
`acc_chart_of_accounts`
LEFT JOIN `acc_posting_details`
ON (`acc_chart_of_accounts`.`nominal_acc_no` = `acc_posting_details`.`nominal_acc_no`)
GROUP BY `acc_chart_of_accounts`.`nominal_acc_no`;
nominal_acc_no coa_name借记卡贷款
10 Freehold property cost (NULL) (NULL)
20 Freehold property depreciation (NULL) (NULL)
110 Leasehold property cost (NULL) (NULL)
120 Leasehold property depreciation (NULL) (NULL)
210 Plant and machinery cost (NULL) (NULL)
310 Fixture and fittings cost (NULL) (NULL)
320 Fixture and fittings depreciation (NULL) (NULL)
410 Motor vehicles cost (NULL) (NULL)
420 Motor vehicles depreciation (NULL) (NULL)
700 Investments (NULL) (NULL)
900 Goodwill (NULL) (NULL)
1000 Stock (NULL) (NULL)
1100 Trade debtors (NULL) (NULL)
1103 Debtors and prepayments (NULL) (NULL)
2100 Purchase ledger control (NULL) (NULL)
2109 Creditors 0.00 54.00
2200 VAT control acc 8.00 0.00
2300 PAYE NI Liability (NULL) (NULL)
2600 Bank loan (NULL) (NULL)
2700 Hire purchase (NULL) (NULL)
2800 Lease purchase (NULL) (NULL)
2900 Other loans (NULL) (NULL)
3000 Capital Acc BBF (NULL) (NULL)
3100 Capital introduced (NULL) (NULL)
3200 Profit and loss account (NULL) (NULL)
3300 Personal drawings (NULL) (NULL)
4000 Sales (NULL) (NULL)
4009 Discounts allowed (NULL) (NULL)
4100 Eport sales (NULL) (NULL)
4200 Royalties received (NULL) (NULL)
4210 Commisions received (NULL) (NULL)
4220 Insurance payout received (NULL) (NULL)
4230 Rental income (NULL) (NULL)
4240 Bank interest received (NULL) (NULL)
5000 Purchases (NULL) (NULL)
5900 Opening stock (NULL) (NULL)
5950 Closing stock (NULL) (NULL)
6000 Direct labour (NULL) (NULL)
6100 Goods out cost 23.00 0.00
6200 Goods in cost (NULL) (NULL)
这只是读取两个帐户表,并且它没有读入acc_chart_of_sub_accounts中的额外名义帐户,但是它给出了我想要最终结果的数字。我真的很难过,所以我可以真的是伸出援助之手。 感谢
大卫
答案 0 :(得分:1)
我想也许你正在寻找一个子选择。你的问题有点漫无边际,所以我不确定。
SELECT
A.`nominal_acc_no`
, A.`coa_name`
, SUM(`acc_posting_details`.`debit`) AS `dabit`
, SUM(`acc_posting_details`.`credit`) AS `credit`
, `acc_posting_details`.`company_id`
FROM
(
SELECT nominal_acc_no ,coa_name FROM acc_chart_of_accounts
UNION
SELECT nominal_acc_no,coa_name FROM acc_chart_of_sub_accounts
) A
LEFT JOIN `acc_posting_details`
ON (A.`nominal_acc_no` = `acc_posting_details`.`nominal_acc_no`)
GROUP BY A.`nominal_acc_no`;