• ベストアンサー

ACCESSクエリで複数テーブルの値の結合について

現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。 テーブルは外部データよりインポートしています。 Aテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 100 00000001 | BBBBBBBB | 200 00000002 | AAAAAAAA | 1000 Bテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 500 00000002 | BBBBBBBB | 300 これを、 KEY1 | KEY2 | 値1 ------------------------------------------------ 00000001:00000001 | AAAAAAAA:AAAAAAAA | 100:500 ←(1) 00000001:NULL | BBBBBBBB:NULL | 200:NULL ←(2) 00000002:NULL | AAAAAAAA:NULL | 1000:NULL ←(3) NULL:00000002 | NULL:BBBBBBBB | NULL:300 ←(4) と表示したいのです。 INNER JOIN では、上記(1)しか表示されません。 また、LEFT JOIN では、(1)(2)(3)は表示されますが、(4)が表示されません。 SQLは下記です(INNER JOINを使用した場合) SELECT [Aテーブル.KEY1] & ":" & [Bテーブル.KEY1] AS KEY1, [Aテーブル.KEY2] & ":" & [Bテーブル.KEY2] AS KEY2, [Aテーブル.値1] & ":" & [Bテーブル.値1] AS 値1 FROM Aテーブル INNER JOIN Bテーブル ON ([Aテーブル].[KEY1]=[Bテーブル].[KEY1]) AND ([Aテーブル].[KEY2]=[Bテーブル].[KEY2]); どなかた教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.2

#1です。 もしかしたら、unionクエリーの時点で、 重複データは、1元化されるかもしれません。 そうなれば、集計クエリーは必要なくなると思います。 すいません。確認してません。

tyurajima
質問者

お礼

UNIONクエリーで作る事が出来ました。 (重複データは自動的に一元化されます) ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kaeru_007
  • ベストアンサー率22% (8/36)
回答No.3

こんにちわ。 LEFT JOINで(1)~(3)を抽出するSQLと、 (4)だけ抽出するSQLを用意して、 2つのSQLをUNION ALLで合体させたらばっちしじゃないでしょうか。

tyurajima
質問者

お礼

#2(#1)さんの方法で作る事ができました。 今回はこれで行こうと思います。 また質問をする時にご協力をお願いします。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.1

LEFT JOIN とright join 両方とも作って、unionで結合して、 集計クエリーで、重複分を圧縮して表示したらどうでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A