![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ACCESS 2003を使用しています。
テーブルA
テーブルB
の2テーブルでクエリを作っています。
結合的には・・・
テーブルAのフィールドX ⇔ テーブルBのフィールドY
です。
これで2テーブルに共通する一致データのみ抽出はできるのですが、
2テーブルに共通する一致データに加えて、
2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。
欲しいのは抽出イメージは、以下のような感じのクエリ結果です。
テーブルA:フィールドX|テーブルBのフィールドY
a |(空)
(空) |b
c |c
d |(空)
(空) |e
f |f
g |(空)
h |h
おそらく、SQL文を書く必要があるとは、想像できるのですが・・・
どなたか、ご教授いただけると助かります。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
SQL文のみで組もうとしたら、私自身がちょっと混乱してしまったので(汗)、
「SQL+クエリ」の組み合わせの形で回答させて戴きます。
なお、No.1の方の回答と同様、更新はできません。
(更新が必要な場合は、画像添付したクエリをテーブル作成クエリか
追加クエリにして、「ワークテーブルで編集&更新ボタンで反映」
といった機構が必要になります)
まず、新規クエリのSQLビューに、以下のSQL文を貼り付けて、
名前を「SQ1」として保存してください。
内容は、「テーブルAのフィールドX、及びテーブルBのフィールドYに
あるデータの非重複の一覧」になります:
Select フィールドX As Idx From テーブルA
Union Select フィールドY As Idx From テーブルB;
次に、この「SQ1」クエリと、テーブルA、テーブルBを使用し、添付
画像のようなクエリを作成してください。
(こちらのクエリ名は何でもOkです)
念のため、SQL文も貼り付けておきます:
SELECT テーブルA.フィールドX, テーブルB.フィールドY FROM
(SQ1 LEFT JOIN テーブルA ON SQ1.Idx = テーブルA.フィールドX)
LEFT JOIN テーブルB ON SQ1.Idx = テーブルB.フィールドY
ORDER BY SQ1.Idx;
※「SQ1」に作成した「Idx」フィールドは、非表示のまま、並べ替えに
使用することで、ご質問文の通りの並べ順にしています。
![「ACCESSクエリでの結合の仕方・・・S」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/256939_5497dfde13df0/M.jpg)
はい、抽出だけですので、内容の更新はなくて大丈夫です。
なんと、「SQL+クエリ」という手法ができるんですね。
考えてみればできることがわかるのですが、これはちょっと気がつきませんでした。
今回は、この手法でやってみたいと思います。
ご丁寧に挿絵までいただき、大変よく理解することができました!
勉強にもなりました!
本当にどうもありがとうございました。
No.3
- 回答日時:
内部結合、外部結合、左外部結合などの言葉がある。
それをエクセルの解説書かWEBで勉強し、質問はどれに当たるか勉強してから、質問すべきだ。
http://www.geocities.jp/kotopara_g/oshiete01/a_k …
など。
SQLはクエリをデザインビューで正しく組み立てれば、SQLビューで見るとどうなるか判る。2の次だ。
>SQL文を書く必要があるとは、想像できるのですが・
生半可な知識で先走りすぎ。SQLから書く人やVBA+SQLでやる(出来る)人ももちろん居るがまだそのレベルではなさそうだ。
ACCESSのGUIのよさを利用すべきだ。
恐れ入ります。
EXCELであれば、VBA+SQLで既にガンガンに組んでいて、DB抽出も更新も慣れています。
ACCESSでも、よくクエリは使っていますが、ユニオンクエリ方面が、あまり使ったことがないもので。
勉強します!
No.1
- 回答日時:
X Y
b
e
a
c c
d
f f
g
h h
表示順はXになってしましますが、以下のクエリでできると思います。
(更新はできません)
SELECT テーブルA.X, テーブルB.Y
FROM テーブルA LEFT JOIN テーブルB ON テーブルA.X = テーブルB.Y
UNION
SELECT テーブルA.X, テーブルB.Y
FROM テーブルA RIGHT JOIN テーブルB ON テーブルA.X = テーブルB.Y;
ご回答どうもありがとうございます。
こちらも試してみたいと思います。
やはりユニオンクエリが必要なのですね・・
アクセスのGUIだけで、SQLを書かなくても、こういったことができるようになると楽チンなのですが・・・でもそれでは勉強になりませんね(苦笑
とにかく、ユニオンクエリに頭をひねっている時間がなかったので、助かりました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
テーブルに表示されているもの...
-
最新日のデータのみ抽出するク...
-
クエリで同一テーブルの複数回...
-
Accesss テーブルの最終更新日...
-
ACCESSユニオンクエリから新テ...
-
Accessでリストの並び順を変更...
-
ACCESS テーブルを見比...
-
ACCESSでテーブルをコピーしよ...
-
アクセス2016 チェックボックス...
-
Access クエリが入力できない
-
Accessのリンクされたテーブル...
-
Acccessで2つのテーブルから1...
-
accessエラー回避について
-
ACCESS テーブルを見比...
-
access vbaにてテンポラリーテ...
-
ユニオンクエリをデザインビュ...
-
Access2007を同時に複数名で使...
-
AccessVBAで任意の複数リンクテ...
-
Access 編集ができるクエリと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
ACCESSユニオンクエリから新テ...
-
テーブルに表示されているもの...
-
Acccessで2つのテーブルから1...
-
Accessのリンクされたテーブル...
-
access vbaにてテンポラリーテ...
-
ACCESSでテーブルをコピーしよ...
-
Accessのテーブルで、リンク?...
-
Accessでリストの並び順を変更...
-
ACCESS テーブルを見比...
-
ACCESS テーブルを見比...
-
アクセス2016 チェックボックス...
-
アクセス 部分一致の抽出
-
Microsoft Access 「Form」のボ...
-
ACCESSのODBCリンクテーブルの...
-
AccessVBAで任意の複数リンクテ...
-
クエリで同一テーブルの複数回...
-
AccessでのリンクテーブルとADO...
-
アクセスVBA現在開いている全て...
おすすめ情報