いちばん失敗した人決定戦

すみません教えて下さい。
「テーブルA」というテーブルと「テーブルB」というテーブルがあり、
それぞれに「項目1」と「項目2」があります。

「テーブルB」の内容を元に「テーブルA」を更新したいのですが、
「テーブルA」の「項目2」が空欄の場合のみ、
「テーブルB」の「項目2」の内容を、
「テーブルA」の「項目2」へ登録したいのです。
その際、紐づけのキーとなる項目を「項目1」にしたいです。

OSはWinXP。アクセス2003です。
すみませんが、どのようにすれば良いか教えてもらえるでしょうか。

A 回答 (2件)

新規のクエリをデザインビューで開いたら、『テーブルの表示』ダイアログを


そのまま閉じ、メニューで「表示(V)→SQLビュー(Q)」を選択して、以下の
SQL文を貼り付けて下さい。
(但し、ご質問通りのテーブル2つがあるのが前提になります)

UPDATE テーブルA INNER JOIN テーブルB ON テーブルA.項目1 = テーブルB.項目1
SET テーブルA.項目2 = [テーブルB]![項目2]
WHERE (((テーブルA.項目2) Is Null));


貼り付け後、再びメニューで「表示(V)→デザインビュー(D)」を選択すれば、
クエリのデザインビューになりますので、それを参考に、実際のテーブルで
同じようなクエリを作成して下さい。


※テーブル2の項目1が主キー(もしくは「重複なし」のインデックスあり)で
 ないと、意図した通りの更新結果にならない場合がある(又は更新不可?)
 のでご注意下さい。

この回答への補足

ありがとうございます。現在、頂いた内容を元に試行錯誤してます。
色々やりすぎてしまい、どうした結果がどれなのか混乱してきました。
「0件のデータが更新されました」となってしまう事もありますし、
「XXXXXXのデータが更新されました」と表示されたので見てみると、
今まで1万件あったレコードが2万件になっていたりします。もう少し色々やってみます。

ところで「デザインビュー(D)」と「SQLビュー(Q)」は表示の違いだけなのですね。

補足日時:2007/03/15 13:16
    • good
    • 0

No.1です。



> 今まで1万件あったレコードが2万件になっていたりします。

まずは10件程度のレコードで動かして、クエリの動作の理解を
第一に考えた方がいいと思います。
(データベースウィンドウでテーブルをコピー&貼り付けし、
 貼り付け時に「貼り付けの設定」で「テーブル構造のみ」を
 選択すると、空のテーブルができます。あとは、これに実際
 のレコードをコピー&貼り付け)
更新クエリで件数が増えるというのはちょっとわかりませんが、「0件が更新」
というのは、間違ってクエリを連続で2回実行されたのではないでしょうか。
(私もうっかりよくやっていましたので・・・(汗))


> 「デザインビュー(D)」と「SQLビュー(Q)」は表示の違いだけなのですね。

「SQL文」がまずあって、けれどそれだと文法(?)を覚えなければならない
ので、より感覚的にわかりやすくするためのインターフェースとして
デザインビューが用意された、ということだと思います。
(実際、デザインビューで作成できるクエリは全てSQLビューに切り替える
 ことができますが、逆は必ずできるわけではありません;
 例えば、2つのテーブルのデータを1フィールドに合一表示させることができる
 「ユニオンクエリ」などは、デザインビューでの表示はできません)


慣れるまでは試行錯誤の連続だと思いますが(・・・そう言う私も今現在かなり
試行錯誤していますが)、お互い頑張りましょう。
    • good
    • 0
この回答へのお礼

色々とアドバイスありがとうございます。
私の質問が悪いのかしら。
もっと皆さんガシガシ答えて頂けると思ったのですが、思いのほか少なく、
そんな中2度も回答いただけて、励みになりました。
がんばりまーす!

お礼日時:2007/03/20 21:26

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