Php 带有SELECT、LEFT JOIN和WHERE子句的算术运算符

Php 带有SELECT、LEFT JOIN和WHERE子句的算术运算符,php,mysql,join,Php,Mysql,Join,我需要帮助。我有下面的代码,它工作得很好,但它没有达到我的目标。我想要一个列account_title,在减法之前,它的每一个计算值都在旁边,这最终会给我减去的值的差值。谢谢你的期待 SELECT ( SELECT SUM(amount) FROM mainaccount_a_2017 LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_a_2017.joi

我需要帮助。我有下面的代码,它工作得很好,但它没有达到我的目标。我想要一个列account_title,在减法之前,它的每一个计算值都在旁边,这最终会给我减去的值的差值。谢谢你的期待

SELECT
(
    SELECT SUM(amount)
    FROM mainaccount_a_2017
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_a_2017.joint_account_number)
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type)
    WHERE a_l_code = 'FA' AND dr_cr_action = 'DR'
)
-
(
    SELECT SUM(amount)
    FROM mainaccount_b_2017
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_b_2017.joint_account_number)
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type)
    WHERE a_l_code = 'FA' AND dr_cr_action = 'CR'
)

更改要按帐户标题分组的子查询,然后将其合并

SELECT debits.account_title, debits.total - credits.total AS net_reduction
FROM (
    SELECT mainaccount_a_2017.account_title, SUM(amount) AS total
    FROM mainaccount_a_2017
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_a_2017.joint_account_number)
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type)
    WHERE a_l_code = 'FA' AND dr_cr_action = 'DR'
    GROUP BY mainaccount_a_2017.account_title
) AS debits
JOIN (
    SELECT mainaccount_b_2017.account_title, SUM(amount) AS total
    FROM mainaccount_b_2017
    LEFT JOIN chart_of_account ON (chart_of_account.joint_account_numbers = mainaccount_b_2017.joint_account_number)
    LEFT JOIN asset_liability_income_expenditure_tbl ON (asset_liability_income_expenditure_tbl.a_l_code = chart_of_account.account_type)
    WHERE a_l_code = 'FA' AND dr_cr_action = 'CR'
    GROUP BY mainaccount_b_2017.account_title
) AS credits ON debits.account_title = credits.account_title

你为什么对我们大喊大叫?在这里用大写字母键入你的问题是不合适的。这会使文本更难阅读,很粗鲁,也不会让你更快地得到帮助。看看主页上的问题列表——除了你的问题,你在所有的大写字母中看到了多少?答案是:没有,因为这样做是不合适的。请停止。帐户名称来自哪里?您没有按帐户对查询进行分组。请参阅@Barmar分组依据很有帮助,但实际值仍未按预期对齐。谢谢:-另外,如果您提供示例数据以及您试图从该数据中获得的输出以及您的问题,这将非常有帮助,而不是强迫我们与您一起玩20个问题来获取详细信息。谢谢,但我收到了关于歧义1052的错误消息-字段列表中的“account_title”列不明确。我已经连接了帐户标题并翻转了一些内容。我想,你所做的非常接近,我能感觉到,但还没有…这意味着你在其他表中有account_title,所以你需要表前缀。我已经更新了答案来说明这一点。如果你在其他表中有帐户标题,那就太糟糕了。它应该只在帐户列表中。@Barmar条件聚合可以避免代码重复。@PaulSpiegel我也这么认为,但它们是不同的表_a和b。