2017-07-25 4 views
0

したがって、顧客あたり複数の金額を持つ3つのテーブル(AcDD、AH、Life)があります。顧客は任意のタイプの組み合わせを持つことができます。私は各テーブルのクエリを作成して、各AcDD、AH、およびLifeの金額を合計しました。次に、それらをまとめて第4のクエリを作成しました。問題は、すべての3つのクエリが共通しているIDのみを取得しているということです。お客様はLifeとAcDDまたはAHを持たない可能性があります。このIDは4番目のクエリにはありません。私は間違って何をしていますか?テーブルによってSQLは複数の出現を持つIDの合計を返します

クエリ(同じクエリは、3つのテーブルごとに存在する):

SELECT DISTINCTROW [Customers-Personal].[Customer ID], 
     Sum([NewB-Coverage: AH].[AH Monthly Benefit]) AS [Sum Of AH Monthly Benefit] 
FROM [Customers-Personal] INNER JOIN [NewB-Coverage: AH] 
ON [Customers-Personal].[Customer ID] = [NewB-Coverage: AH].[Customer ID] 
GROUP BY [Customers-Personal].[Customer ID]; 

第四クエリ(すべてを組み合わせる)

​​

答えて

0

あなたはLEFT(またはRIGHT)を使用する必要がありますが加わり。 INNER JOINSは、一致するレコードがすべてのテーブルに存在することを要求します。 LEFT結合では、左表のすべてのレコードが返されるように指定されています()。右側の表で一致しない行の場合は、NULL値が戻されます。 (右ジョインはまったく同じことですが、テーブル名の相対位置を入れ替えるだけですが、通常はLEFTジョインだけを使用するようにテーブルを並べ替える必要がありますが、必須ではありません)。

LEFT JOIN, RIGHT JOIN Operations MS Access特有のものです。

第4クエリのやり直し。私は、テーブルの元の順序を維持するために、ちょうど右ジョインを使用しました。

SELECT [Customers-Personal].[Customer ID], 
     Sum_AcDD.[Sum Of AcDD Amount], 
     Sum_AH.[Sum Of AH Monthly Benefit], 
     Sum_Life.[Sum Of Decr Life Amount], 
     Sum_Life.[Sum Of Level Life Amount] 
FROM Sum_Life RIGHT JOIN 
      (Sum_AH RIGHT JOIN 
       (Sum_AcDD RIGHT JOIN [Customers-Personal] 
         ON Sum_AcDD.[Customer ID] = [Customers-Personal].[Customer ID]) 
       ON Sum_AH.[Customer ID] = [Customers-Personal].[Customer ID]) 
      ON Sum_Life.[Customer ID] = [Customers-Personal].[Customer ID]; 
+0

@Cパーキンス、詳細な説明とリンクをお寄せいただきありがとうございます。これは完璧に機能しました。 – TechEng

0

これにはいくつかの方法があります。留意すべき主なものは、結合タイプです。 [得意先 - 個人]。[得意先ID]の列とそのテーブルからの左結合を保持してください。

SELECT 
[Customers-Personal].[Customer ID] 
,Sum_AcDD.[Sum Of AcDD Amount] 
,Sum_AH.[Sum Of AH Monthly Benefit] 
,Sum_Life.[Sum Of Decr Life Amount] 
,Sum_Life.[Sum Of Level Life Amount] 
FROM 
[Customers-Personal] 
LEFT JOIN Sum_AcDD ON [Customers-Personal].[Customer ID] = Sum_Life.[Customer ID] 
LEFT JOIN Sum_AH ON [Customers-Personal].[Customer ID] = Sum_AH.[Customer ID] 
LEFT JOIN Sum_Life ON [Customers-Personal].[Customer ID] = Sum_Life.[Customer ID] 
+0

@アンドリュー、応答のためにありがとうが、これは動作しませんでした。 [顧客ID] = Sum_Life [顧客ID] LEFT JOIN Sum_AH ON [[得意先 - 個人]。[得意先コード] = Sum_AH。 [顧客ID] LEFT JOIN Sum_Life ON [[得意先 - 個人]。[得意先ID] = Sum_Life。[得意先ID] ..... SumでSum Leftを設定すると何か関係があるかどうかわかりません。 [顧客ID] ... LEFT JOIN Sum_AcDD ON [Customers-Personal]。[Customer ID] = Sum_Life。[Customer ID]ではなく、@ Perkinsのソリューションが機能しているかどうかはわかりません。 – TechEng

関連する問題