クエリで特定の結果を得るために、いくつかのテーブルを結合する方法を考え出すのに苦労しています。
私は2つのテーブルを持っています:
可能なすべての&レコードを含む
[T_Prog]
テーブルで、各レコードの金額が それぞれの.ID1
ID2
PRGCASH
MONTHNUMBER
すべての可能性のある&レコードの割合を含む
[T_ALS]
テーブルで、それぞれの.ID1
ID2
ALSCASH
MONTHNUMBER
私がやりたいのは、 フィールドPRGCASH
とALSCASH
フィールドをそれぞれID1
のID2
とMONTHNUMBER
フィールドに適切に一致させて、単一のクエリにまとめることです。
各テーブル内のレコードの一意性はID1
、ID2
とMONTHNUMBER
フィールドの組み合わせです。
私が抱えている問題は、[T_ALS]
テーブルに含まれるエントリよりもMONTHNUMBER
、一意ID1
のID2
組み合わせごとにテーブルに多くのエントリが含まれていること[T_Prog]
です。
じゃあ、こうすれば…
SELECT [T_Prog].ID1, [T_Prog].ID2, [T_Prog].MONTHNUMBER, [T_Prog].PRGCASH, [T_ALS].ALSCASH
FROM [T_Prog]
LEFT JOIN [T_ALS] ON ([T_Prog].ID1 = [T_ALS].ID1) AND ([T_Prog].ID2 = [T_ALS].ID2) AND ([T_Prog].MONTHNUMBER = [T_ALS].MONTHNUMBER)
...すべての可能なレコードを取得しますが、テーブルに同等のレコードがないため、それ以降の追加レコードは失われ[T_ALS]
ます。MONTHNUMBER
[T_Prog]
このままやったら…
SELECT [T_ALS].ID1, [T_ALS].ID2, [T_ALS].MONTHNUMBER, [T_Prog].PRGCASH, [T_ALS].ALSCASH
FROM [T_ALS]
LEFT JOIN [T_Prog] ON ([T_ALS].ID1 = [T_Prog].ID1) AND ([T_ALS].ID2 = [T_Prog].ID2) AND ([T_ALS].MONTHNUMBER = [T_Prog].MONTHNUMBER)
...[T_ALS]
テーブルには可能なすべてのレコードの一部しか含まれていないため、可能なすべてのレコードを取得することはできません。
これは、サンプルデータを含む2つのテーブルと、私が達成しようとしている最終的なクエリテーブルの図です:
Prog
テーブル:
|[ID1]|[ID2]|[MONTHNUMBER]|[PRGCASH]|
| 1 | A | 1 | 600 |
| 1 | B | 1 | 500 |
ALS
テーブル:
|[ID1]|[ID2]|[MONTHNUMBER]|[ALSCASH]|
| 1 | A | 1 | 100 |
| 1 | A | 2 | 100 |
| 1 | A | 3 | 100 |
理想的な結果:
|[ID1]|[ID2]|[MONTHNUMBER]|[PRGCASH]|[ALSCASH]|
| 1 | A | 1 | 600 | 100 |
| 1 | A | 2 | | 100 |
| 1 | A | 3 | | 100 |
| 1 | B | 1 | 500 | |