こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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]);


どなかた教えてください。お願いします。

投稿日時 - 2005-08-16 11:55:43

QNo.1583217

困ってます

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

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

投稿日時 - 2005-08-16 12:44:05

お礼

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

投稿日時 - 2005-08-16 13:42:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちわ。

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

投稿日時 - 2005-08-16 12:47:49

お礼

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

ありがとうございました。

投稿日時 - 2005-08-16 13:46:17

ANo.1

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

投稿日時 - 2005-08-16 12:39:39

あなたにオススメの質問