• ベストアンサー

テーブルの一部を別のテーブルを使って更新したい

テーブルA…[住所]、[氏名]、[電話番号]、[携帯番号]、[変更日] テーブルB…[氏名]、[自宅電話・携帯番号]、[変更日] Bの[氏名]と[自宅電話・携帯番号]が、Aの[氏名]と[電話番号]、[携帯番号]に一致した場合、Aの[変更日]がBの[変更日]に更新されるようにしたいです。 以前、似たような質問で回答して頂いたのですが、条件が二つになり指定方法が上手くいかなくなってしまいました。 お手数お掛けしますが回答宜しくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

UPDATE TBL_B INNER JOIN TBL_A ON ((TBL_B.自宅電話・携帯番号=TBL_A.携帯番号) Or (TBL_B.自宅電話・携帯番号=TBL_A.電話番号)) AND (TBL_B.氏名=TBL_A.氏名) SET TBL_B.変更日 = TBL_A.変更日; こんな感じかな?SQLビューでしか編集できません。 一応検証はしましたが自信が無いので、 バックアップを取って実行し、検証もしつこい位に行ってください。 当方Access2002

kumafukuro
質問者

お礼

できました! 回答ありがとうございました。 ただ、更新したいテーブルはAなので、1行目と2行目のAとBを入れ替えました。

その他の回答 (2)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

No.1です 訂正します 『電話番号』を → 『電話番号』で 『携帯番号』を → 『携帯番号』で よろしくお願いします。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

質問の回答にならないかも知れませんが、 1つの更新クエリで処理をせずに『電話番号』を更新するクエリと 『携帯番号』を更新するクエリの2つをつくり、 マクロで動かしてはいかがでしょうか

kumafukuro
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • 別のテーブルのレコードを転記したい

    テーブルA:職員番号,氏名,住所 テーブルB:職員番号,給与,住所 このときに2つのテーブルの職員番号が一致するものについてテーブルAの住所をテーブルBの住所に転記(更新)したいのですが、更新クエリとかでできるものですか?

  • テーブルの結合?

    accessのテーブル2つを1つのテーブルにする方法を教えていただけないでしょうか。 《テーブルA》 氏名,住所,電話番号,・・・・ 《テーブルA》 氏名,健康保険番号,雇用保険番号,・・・・ 氏名は、テーブルAとテーブルBで一致しています。 とりあえず、1個のテーブルにしてしまいたいのですが。

  • SQLで他のテーブルを参照して該当個所を一発更新したい

    例えば次のような二つのテーブルがあるとします。 住所録(氏名,住所,メモ) 電話帳(氏名,電話番号) ※(住所録の氏名はキーだが電話帳の氏名はキーではない) この時、住所録テーブルに対して、 電話帳に電話番号がない名前全てについて メモに、"電話番号は不明"と言う更新をしたいのですが… UPDATE 住所録 SET メモ='電話番号は不明' WHERE … のWHERE句には何と書けばいいのか分からなくて困っています。 それともこういう時の更新はそもそも出来ないのでしょうか? 回答よろしくお願いします。

  • アクセスでテーブルの一部を他テーブルを使って更新をしたい

    [ユーザーリスト]というテーブルがあり、その中にはユーザー名、住所、電話番号などが入っています。 後から電話番号の更新があったユーザーを修正するために、新しい電話番号とユーザー名だけが入っている[更新リスト]というテーブルを使って、[ユーザーリスト]の電話番号だけを一括で修正することはできるのでしょうか。 わかりにくい説明で申し訳ありませんが、ご回答の方宜しくお願いします。

  • Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

    2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。 テーブル名とフィールドは以下のとおりです。 ==================== テーブル名「名簿A」 氏名 電話番号 住所 メールアドレス ==================== テーブル名「名簿B」 姓 名 電話番号 住所 メールアドレス ==================== たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、 メールアドレスフィールドの抽出条件として Like [名簿B].[メールアドレス] を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。 ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。 そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として Like (*[名簿B].[姓]*) を設定するものでした。 これがうまくいけば最終的には Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*) という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に Like ("*[名簿B].[姓]*") となってしまい、何も抽出されなくなってしまいました。 このような方法では希望する抽出は行えないのでしょうか? お分かりのかた、よろしくお願いいたします。

  • accessのVBAでテーブル更新するには・・・?

    [input]フォームより「登録」ボタンを押すことで [data]テーブルの[氏名][住所][電話番号][年齢][性別][コメント]フィールドを更新する動作をVBAだけでさせたいです。 このボタンだけで新規登録と更新登録ように既存データの氏名と住所を参照して入力されたデータが既存なのかを確認するようにしたいです。 dim dbs as database をつかってSQLを書き込んでいけばいけるような気がするのですが どうもうまくいきません。 よろしくお願いします。

  • 複数のテーブルから複数条件で新規テーブルへ抽出するには?

    こんにちわ。 Windows2000、Access2000という環境下で、 住所録の統合をしようとしています。 簡単な構成は、前任者が、グループ関連会社別に住所録のmdbを作っており、各テーブルのフィールドで主要なものは、「通し番号(各mdbごと)」「氏名」「会社名」「住所」です。 ここで、最終的にテーブルを一つにまとめれば完了としたいところなのですが、 2002年夏の時点での住所録A.mdb 2003年冬の時点での住所録B.mdb 2003年春の時点での住所録C.mdb とあり、それぞれにBの時点での新規入力・(住所等の)更新、Cの時点での新規入力・更新があるのです。 BはAを元に作られており、CはBを元に作られています。 ダブっている部分があるのです。 そこで、AとBを比較してAの中で「氏名」、「会社名」が同じもの以外と、Bのデータを新しいDBのテーブルへ、 新しくできたDBのテーブルとCのテーブルとを比較して、「氏名」「会社名」が同じものは、既存のレコードを消去してCのデータを追加するということをやりたいのです。 つまり、BやCでの更新・新規入力をうまく反映させた形の住所録にしたいのです。 Access自体の使い方に不慣れなもので、この作業がAccessのクエリ等の組み合わせでできるのか、それともSQLやVBAを駆使しないと無理なのかの判断もつきません。 どなたか参考になりそうな操作やSiteを知っていましたら、 教えてください。 よろしくお願いします。

  • テーブルの更新について

    Aというテーブル(以下A)に、Bというテーブル(以下B)の変更部分を反映させたいのですが、 何かいい方法があったら教えてください。 まずAをコピーしてBを作成しました。 Bの内容を一部変更し、変更したレコードには判定フィールドに"1"を立ててあります。 このBでの変更部分をAにも反映させたいのですが, 初めのAの内容が若干変わっています。 変更したデータは2,000件くらいあります。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <大元になっているA> 商品コード/商品名/取引先名/・・・・/判定/ A001/はさみ/川崎文具店/・・・・// A002/消しゴム/沖縄商店/・・・・// A003/ホッチキス/新潟文具店/・・・・// B004/付箋/新潟文具店/・・・・// B005/ガムテープ/浦安文具店/・・・・//         ・         ・ <B> 商品コード/商品名/取引先名/・・・・/判定/ A001/はさみ/ヤマグチ文具店/・・・・/1/ ←変更 A002/消しゴム/沖縄商店/・・・・// A003/ホッチキス/千葉商店/・・・・/1/  ←変更 B004/付箋/新潟文具店/・・・・// B005/ガムテープ/浦安文具店/・・・・//         ・         ・ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 夜間バッチではなく、日中のシステム稼動中にテーブルの更新を行いたいので、 システムへの影響も考え、できるだけ早く更新処理をしたいです。 今思いつく方法としては、 ・VBでテーブル更新を行うプログラムを作成。 ・SQLのスクリプトを作成。 ・アクセス又はSQLServerの機能を利用。 の3つです。 これ以外に何か方法がありましたら教えてください。 また、上記の方法でこんなふうにしたら処理が早いよ、 などありましたら教えてください! よろしくお願いします。

  • 3テーブルのUNIONについて

    はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 前提 テーブルA(ID、過去データ) テーブルB(氏名、得点、学年、組) テーブルC(ID、氏名、年齢、住所) 条件 A.ID = C.ID  AND B.氏名 = C.氏名 取得 B.氏名 B.得点 B.学年 上記のSQLをUNIONで記載するにはどうすれば良いでしょうか。 以上です。回答の方をよろしくお願い致します。

  • SQL文で複数列の更新をしたい。

    SQL初心者です。 全レコードを対象にNULLが入ってるフィールドを半角スペースに更新したいのですが、SQL文で記述するにはどうしたらいいのでしょうか? 例えば 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111  NULL    A 佐藤 新宿  NULL      19450412  NULL 鈴木 池袋  03-1234-2222  19700522  B            ↓ 氏名 住所  電話番号    誕生日   血液型 田中 渋谷  03-1234-1111        A 佐藤 新宿          19450412   鈴木 池袋  03-1234-2222  19700522  B こんな感じです。 知恵をお貸しください。よろしくお願いいたします。

専門家に質問してみよう