プロが教えるわが家の防犯対策術!

現在、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]);


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

A 回答 (3件)

#1です。


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

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

お礼日時:2005/08/16 13:42

こんにちわ。



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

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

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

お礼日時:2005/08/16 13:46

LEFT JOIN とright join


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!