• ベストアンサー

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

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

メインの全レコードと、サブとメインの不一致クエリーから求めたサブのレコードを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を回答してもらいたかったらフィールド名くらい書いておきましょうね。

ooo333ttt
質問者

お礼

AS で助かりました。 ありがとうございました。

その他の回答 (1)

回答No.2

SQL1文で記述するよりは、クエリーを作成して順番に実行するほうがいいと思います。 1.TBLresultテーブルを新規作成する。もちろんデータは空。 2.追加クエリーでTBLmainからTBLresultへ追加する。 3.同様に追加クエリーでTBLsubからTBLresultへ追加する。 4.TBLresultを主キーでソートすればOK

ooo333ttt
質問者

お礼

ひとつの方法ですね。 RDBMSの具体的な実装がわからないので、 なかなか素人には判断できないところです。 ありがとうございました。

関連するQ&A