- ベストアンサー
SQL:Access:プライオリティが異なる2つのテーブルのマージ
みなさん、こんばんは。 下記のような TBLmain、TBLsub という2つのテーブルをマージするにあたって、 主キーが同じであるレコードがそれぞれのテーブルに存在する場合には、 TBLmain を優先させ、TBLresult のような結果を得たいのですが、 どのように SQL を記述すればよいのでしょうか? DB は Access2000 を使用しています。 どうぞ、よろしくお願いいたします。 TBLmain 1 aaa 4 bbb 8 ccc TBLsub 1 XXX 2 TTT 3 YYY TBLresult 1 aaa 2 TTT 3 YYY 4 bbb 8 ccc
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
メインの全レコードと、サブとメインの不一致クエリーから求めたサブのレコードをunionで和を求めています。 select f1, f2 from TBLmain union all select s.f2, s.f2 from TBLmain as m right join TBLsub as s on m.f1 = s.f1 where isnull(s.f2); #SQLを回答してもらいたかったらフィールド名くらい書いておきましょうね。
その他の回答 (1)
- reachippatu
- ベストアンサー率24% (105/431)
SQL1文で記述するよりは、クエリーを作成して順番に実行するほうがいいと思います。 1.TBLresultテーブルを新規作成する。もちろんデータは空。 2.追加クエリーでTBLmainからTBLresultへ追加する。 3.同様に追加クエリーでTBLsubからTBLresultへ追加する。 4.TBLresultを主キーでソートすればOK
お礼
ひとつの方法ですね。 RDBMSの具体的な実装がわからないので、 なかなか素人には判断できないところです。 ありがとうございました。
お礼
AS で助かりました。 ありがとうございました。