• ベストアンサー

ACCESSクエリで複数テーブルの抽出方法

#1583217にて質問させていただいたものです。 私の早とちりで質問を締め切りさせていただいたのですが、クエリが要求通りに出てくれません。 再度、質問させて下さい。 現在、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 ---------------------------------------- NULL:00000002 | NULL:BBBBBBBB | NULL:300 と表示したいのです。(Bテーブルにあるデータのみを表示) どなかた教えてください。お願いします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

とりあえず、「Null」の表示がなくても良いなら: SELECT Bテーブル.Key1, Bテーブル.Key2, Bテーブル.値1 FROM Aテーブル RIGHT JOIN Bテーブル ON (Aテーブル.Key1 = Bテーブル.Key1) AND (Aテーブル.Key2 = Bテーブル.Key2) WHERE (((Aテーブル.Key1) Is Null) AND ((Aテーブル.Key2) Is Null)); あくまで「Null:」を表示したいのであれば: SELECT "Null:" & [Bテーブル]![Key1] AS Key1連結, "Null:" & [Bテーブル]![Key2] AS Key2連結, "Null:" & [Bテーブル]![値1] AS 値連結 FROM Aテーブル RIGHT JOIN Bテーブル ON (Aテーブル.Key1 = Bテーブル.Key1) AND (Aテーブル.Key2 = Bテーブル.Key2) WHERE (((Aテーブル.Key1) Is Null) AND ((Aテーブル.Key2) Is Null)); といったところでいかがでしょうか? (2番目の方、クエリの構造的に「Aテーブルにないもの→Null」しかないので、テキストで「Null:」表示としています)

tyurajima
質問者

お礼

そっか、where条件で、AテーブルがNULLと指定すればよかったのですね! 勉強になりました。 ありがとうございました。

その他の回答 (1)

noname#79209
noname#79209
回答No.2

クエリを2つ作っても良いのであれば、 Q_Bテーブルのみに存在 SELECT テーブルA.KEY1, テーブルB.KEY1, テーブルA.KEY2, テーブルB.KEY2, テーブルA.値1, テーブルB.値1 FROM テーブルB LEFT JOIN テーブルA ON (テーブルB.KEY2 = テーブルA.KEY2) AND (テーブルB.KEY1 = テーブルA.KEY1) WHERE (((テーブルA.値1) Is Null)); Q_Aテーブルのみに存在 SELECT テーブルA.KEY1, テーブルB.KEY1, テーブルA.KEY2, テーブルB.KEY2, テーブルA.値1, テーブルB.値1 FROM テーブルA LEFT JOIN テーブルB ON (テーブルA.KEY2 = テーブルB.KEY2) AND (テーブルA.KEY1 = テーブルB.KEY1) WHERE (((テーブルB.値1) Is Null));

tyurajima
質問者

お礼

”テーブルに値がない事”を条件にするという発想が出来ませんでした。 勉強になりました。 ありがとうございました。

関連するQ&A