0
をJOIN私はこの下にあります。それが正常に動作するが、MYSQL UNION SUM(量)出力2つの結果の代わりに1
SELECT a.* FROM (SELECT
asset_liability_income_expenditure_tbl.a_l_code,
SUM(mainaccount_a_2017.amount), mainaccount_a_2017.dr_cr_action
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 asset_liability_income_expenditure_tbl.a_l_code = 'FA'
AND mainaccount_a_2017.dr_cr_action = 'DR' UNION
SELECT asset_liability_income_expenditure_tbl.a_l_code,
SUM(mainaccount_b_2017.amount),
mainaccount_b_2017.dr_cr_action
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 asset_liability_income_expenditure_tbl.a_l_code = 'FA'
AND mainaccount_b_2017.dr_cr_action = 'DR'
) AS a
ディスプレイのいずれか1つの空の上部に行と下和又はVIS-A- vis。私はLIMIT 1を試しましたが、行2のSUM(量)が出力され、フェッチできず、制限を適用しないと、行1のSUM(量)何が欠けているか知っている。親切にお手伝いください。ありがとう。
は、これらの偽の外部結合がある –
テーブルからの結果と日付のダンプを投稿してください。クエリは 'chart_of_account'と' asset_liability_income_expenditure_tbl'を外部結合しようとしますが、WHERE句では 'FA'以外のすべてのa_l_codeを却下します。これにより結局外側のすべてのレコード(a_l_code null)が取り除かれます。したがって、結合は実際には内部結合です。そして、あなたは 'mainaccount_a_2017.amount'に関連する 'FA'レコードの出現を掛けるために参加しますか?これは奇妙に見えます。 –
テーブル 'mainaccount_a_2017'と' mainaccount_b_2017'(テーブル名だけで1年であっても)は、悪いデータベース設計のように聞こえます。うまくいけば、これらはちょうど一時テーブルです、あなたはセットアップしましたか? –