2016-07-13 1 views
-1

私はAccessデータベースに3つのテーブルを持っています。 CheckDJCashDJには、CashRJより多くの列があります。私はそれらのテーブルを1つに統合したいと思います。私は、次のクエリを持っている:アクセスする複数のテーブルを結合する

SELECT 
    a.acctname, 
    a.code, 
    (
     sum(a.debit) + sum(b.debit) + sum(c.debit) 
    ) AS DebitTotal, 
    (
     sum(a.credit) + sum(b.credit) + sum(c.credit) 
    ) AS CreditTotal 
FROM 
    (
     CheckDJ a 
     LEFT OUTER JOIN CashRJ b ON a.id = b.id 
    ) 
LEFT OUTER JOIN CashDJ c ON a.id = c.id 
GROUP BY 
    a.acctname, 
    a.code 

問題は、のみCheckDJと同様のデータを表示する上記のコードです。誰でも助けてくれますか?前もって感謝します!

+3

それは素晴らしいものだ。


CheckDJCashDJ、またはCashRJ場合は、このクエリを使用し、それらに同じレコードを持っていることデータ)。 – mitkosoft

+0

類似データとは何ですか? –

+0

@GiladGreen CheckDJと同じデータです。 CheckDJと同じではない他のテーブルに入力した他のデータは表示されません。 –

答えて

0

すべてのレコードを含むことUNIONクエリから選択し、acctnamecodeが主キーであると仮定すると:

SELECT acctname, code, SUM(debit) As DebitTotal, SUM(credit) AS CreditTotal 
FROM 
(
    SELECT acctname, code, debit, credit, "CheckDJ" As SoursTblName 
    FROM CheckDJ 
    Union 
    SELECT acctname, code, debit, credit, "CashRJ" As SoursTblName 
    FROM CashRJ 
    Union 
    SELECT acctname, code, debit, credit, "CashDJ" As SoursTblName 
    FROM CashDJ 
) 
GROUP BY acctname, code 

フィールドSoursTblNameは、一つに異なるテーブルから一体化同じレコードを防止するために添加されます。再度(ここではいくつかのこれらのテーブルからのサンプルデータおよび所望の結果を投稿する

SELECT acctname, code, SUM(debitSum) As DebitTotal, SUM(creditSum) AS CreditTotal 
FROM 
(
    SELECT acctname, code, SUM(debit) As debitSum, SUM(credit) As creditSum, "CheckDJ" As SoursTblName 
    FROM CheckDJ 
    GROUP BY acctname, code 
    Union 
    SELECT acctname, code, SUM(debit) As debitSum, SUM(credit) As creditSum, "CashRJ" As SoursTblName 
    FROM CashRJ 
    GROUP BY acctname, code 
    Union 
    SELECT acctname, code, SUM(debit) As debitSum, SUM(credit) As creditSum, "CashDJ" As SoursTblName 
    FROM CashDJ 
    GROUP BY acctname, code 
) 
GROUP BY acctname, code 
+0

クエリには、集計関数の一部として指定された式 'acctname'が含まれていません。これは私があなたのコードを試しているエラーです。 –

+0

2番目のSQLを変更します – marlan

+0

はい、動作します!ありがとうございます –

0

私はあなたのポイントを得る、あなたはグループ機能を使用すべきではありません。すなわち:これで

sum(a.credit) + sum(b.credit) + sum(c.credit) 

sum(a.debit) + sum(b.debit) + sum(c.debit) 

、あなたはすべてのレコードに対して同じ量を取得します。グループ機能なしで一緒に追加してください。

+0

'Left Join'は結果セットを' CheckDJ'の 'id'sに限定し、他の' id'は集計されません。グループ分けは問題ではありません。 – marlan

+0

@marlanこの問題を解決するお手伝いをしてもらえますか? –

+0

@ Mai.V上記の組合クエリを編集しました。 – marlan

関連する問題