2012-02-20 19 views
0

Excelに付属しているかなり古いMicrosoft Queryを使用して、ODBCデータベースを照会しています。しかし、私は2つのテーブルを結合すると私に間違った合計を与えています。間違った和を返すSQLクエリ

これは正常に動作します:

SELECT accountcode, SUM(tr_amount) 
FROM deb_trans deb_trans 
WHERE (today() > dr_tr_due_date + 14) 
GROUP BY accountcode 

をしかし、これはそうではない:

SELECT deb_trans.accountcode, Sum(deb_trans.tr_amount) 
FROM deb_trans deb_trans, mailer_master mailer_master 
WHERE (today()>dr_tr_due_date+14) AND (mailer_master.accountcode=deb_trans.accountcode) 
GROUP BY deb_trans.accountcode 

入社フィールドはaccountcodeています。

フィールドtr_amountは、deb_transテーブルからorginatesです。 mailer_masterには存在しません。

アイデア?みんなありがとう!

+2

2つのテーブルの間に1対1の対応がない場合、同じSUMを得ることはできません。たとえば、mailer_masterの2つの行がdeb_transの1つの行に参加すると、その行のdeb_transに対してtr_amountが2回追加されます。 –

+0

ありがとうございます。それは1つ(mailer_master)-many(deb_trans)の対応です。 Deb_transにはすべての重要な情報があります。 mailer_masterが共通のアカウントコードを使って持つ余分なフィールドを付けたいだけです。 – halohunter

+0

2番目のテーブルを追加すると、SUMは大きくなるか小さくなりますか? –

答えて

1

テーブルを結合すると、グループ化される前にフィルター条件に対応する各組み合わせの行が取得されます。この場合、各deb_transとmailer_masterの組み合わせの行は日付でフィルタリングされます。有効な合計が必要な場合は、行数(グループ化前)が変更されるように別の表に結合しないでください。

関連する問題