• ベストアンサー

アクセス2000でこんなこと。。

はじめまして。 アクセス2000を始めて使っています。 そこで、こんなことができるか? どうすればいいのか教えてください!!! 1)テープルが2つ(テーブル1・テーブル2)あります。 2)テーブル1に   電話番号、住所が登録してあります。 3)テーブル2に   電話番号、氏名が登録されています。   このテーブル2に、   電話番号をキーとして、   テーブル1にある、住所を追加したいのです。   (自動的にテーブル1を参照して、    結果を自動的に追加したいのです) こんなときって どうすればいいのでしょうか? 教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.7

>「テーブル2の住所フィールドを取り出す」という言葉の意味はわかるのですがアクセスでどのように設定すればいいのか 難しく考えることはないです。クエリの新規作成でクエリのウィザードが開くはずなので選択クエリウィザードを選びテーブル2を選び選択可能なフィールドで電話番号・市名を選びます。次へ進みクエリのデザインを編集するにチェックを入れ完了ボタンをクリックするとクエリのデザインビューが表示されますのでクエリ上で右クリックしメニューのテーブルの表示を選択しテーブル1を追加します。 これでデザインビュー内にテーブル2が追加されます。リレーションシップを取っていると自動で結合線が表示されますがしてない場合はテーブル2の電話番号をドラッグしテーブル1の電話番号で結合させます。両テーブルとも電話番号を主キーとしていれば重複する番号はないので1対1の結合ができます。テーブル1の住所をダブルクリックするか住所をドラッグしてクエリの新しいフィールド上に持って行けば住所のフィールドが追加されます。 この状態でクエリは電話番号・氏名・住所になっているはずです。 このクエリを保存して開けば1つのテーブルの様に表示されます。 これは簡単に出来ますので試してみてください。 この様にクエリで別のテーブルのフィールドを結合させてフォーム等のレコードソースとし使えるので同じ内容のフィールドを複数持たなくても良くなります。キーになるものがあればキー同士を結合し必要なフィールドだけを表示すればいいので複数の同内容フィールド(複数の同内容のシールド=住所)はいらないとなります。 クエリで色々できるので試してみてください。

lovelovelvoelvoe
質問者

お礼

細かく説明していただき、 本当にありがとうございます。 ここまで説明していただければ、 初心者の私でもできそうです。 (すみません。ほかでトラブル発生中で、  まだ、試せていません) お手数をおかけしましたが とても助かりました。

その他の回答 (7)

noname#182251
noname#182251
回答No.8

1.アクセス入門書の購入をお勧めします アクセスのような、実行/開発ともにGUIがほとんどのアプリケーションは、説明するのに文字だけだと、説明する側、される側、共に辛いです。画面のスナップショットに説明を加えるだけで、どれだけ理解が早まるか。 2.テーブルの設計 テーブル1に、電話番号、住所 テーブル2に、電話番号、氏名 この設計はどう考えても不自然です。ごく単純に テーブル1に、電話番号、住所、氏名 で良いと思いますが、何らかの理由(思い入れ?)があってのことでしょう。そこら辺を説明されると、それなりのアドバイスがあるかもしれません。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.6

テーブル1にもテーブル2にも住所のフィールドを持たせたいというのはデータベースの正規化から言えば外れますが使う人の自由な構成でも特に問題はないと思いますが。 その辺は使いながらリレーショナルデータベースの概念を分かっていけばいいことだと思います。 >テーブル1は電話番号と住所の管理専門で使いたいので ただテーブル1からテーブル2へ住所を追加してしまえばテーブル2だけあればいいのでテーブル1は不要になります。 >テーブル1は電話番号と住所の管理専門で使いたいので とありますがテーブル2に住所を追加してしまえばテーブル2の電話番号と住所のみ使えば良いだけの話となります。 >登録データに変更があった場合は必ずテーブル1を修正したいのです。 テーブルが1つならそのテーブルを修正すれば良いだけになります。 このままテーブル1と2がそのままの状態(テーブル2に住所無い状態)であっても選択クエリでキー(電話番号)を結合し電話番号・氏名・住所のフィールドを表示してそのクエリを使用すれば1つのテーブルの様に使えるので余分な更新(UPDATE)がいらなくなります。 通常はこんな感じでデータベースの構成をスリムにします。 >自動的にテーブル1を参照して結果を自動的に追加したいのです テーブル1にあってテーブル2に無ければテーブル2に追加したいという事ならテーブル1のクエリを作りテーブル2に無いレコードを抽出するように条件を設定しそのクエリをテーブル2のテーブル追加クエリにすればクエリを起動すれば出来ます。 他のテーブルのレコードを別のテーブルのレコードに更新する場合は更新クエリ。他のテーブルに無いレコードを別のテーブルのレコードから追加したい場合は追加クエリを使います。

lovelovelvoelvoe
質問者

お礼

回答ありがとうございました。 下記も私がやりたいことです。 どこまでできるか、わかりませんが、 やってみたいと思います。 クエリに条件をつけて  あたりから、 いったい何のことやら。 ネットで調べながらやってみます。 ~~~~~~~~~~~~~~~ テーブル1にあってテーブル2に無ければテーブル2に追加したいという事ならテーブル1のクエリを作りテーブル2に無いレコードを抽出するように条件を設定しそのクエリをテーブル2のテーブル追加クエリにすればクエリを起動すれば出来ます。 他のテーブルのレコードを別のテーブルのレコードに更新する場合は更新クエリ。他のテーブルに無いレコードを別のテーブルのレコードから追加したい場合は追加クエリを使います。

noname#182251
noname#182251
回答No.5

#2、#3です。重要なことを書き忘れていました。 >電話番号をキーとして これは(特殊な理由がない限り)やめた方が良いです。電話番号は変わる可能性があり、その場合リレーションがめちゃくちゃになります。 リレーショナルデータベースでキーとして使用するのは、ユーザが変更できないものを使用することが望ましいです。 で、話が前後しますが、テーブルの設計から見直すことを強くお勧めします。基本の勉強にもなるし、データが増えたり、フォームやレポートをたくさん作ってからの変更は辛いです。

lovelovelvoelvoe
質問者

お礼

回答ありがとうございました。 いろいろ教えていただいているのですが。。 2)テーブル1、テーブル2をクエリデザインビューに取り込み 電話番号フィールドで結合して、テーブル2の住所フィールドを取り出す で、すでにつまずきました。 「テーブル2の住所フィールドを取り出す」という言葉の意味はわかるのですが、 アクセスでどのように設定すればいいのかが、 わからず*0*。 なので、テーブル設計を含めて、 自分の力&時間と相談して、またやってみたいと思います。 いろいろありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

#1です >結果的に好ましくない状況が発生すると考えます。 >「住所データの二重化」です。 2つのテーブルから新しいテーブルを作りテーブル1は廃棄するものと考えて回答しました >テーブル1は電話番号と住所の管理専門で使いたいので、 同じようなテーブルを2つ持つのは正規化以前の問題で絶対にやってはいけないことです また、最初の質問のように住所と氏名でテーブルを分けることもやってはいけません

noname#182251
noname#182251
回答No.3

#2です。 >また、テーブル1のデータを変更したとき、 >テーブル2で参照しているデータも >自動更新がかかるとうれしいので 自動更新というか、選択クエリを使用していれば、あたかも一つのテーブルのように見えて、常に最新のデータが利用できます。これが「リレーショナルデータベースの基本的使い方」です。 今回のケースで更新クエリを使うとすれば、何か特殊な事情、たとえば「書き換え前のデータを残しておきたい」がある場合のみでしょう(更新クエリそのものは大変有用なものです)。

noname#182251
noname#182251
回答No.2

ケチを付けるつもりは毛頭ありません(^^; #1のご回答は、質問に対して正しい回答ですが、結果的に好ましくない状況が発生すると考えます。 「住所データの二重化」です。 で、もと質問が今一つ不明瞭ですが、 1.二つのテーブルを統合したい これであれば、更新クエリ実行後テーブル1を破棄(即破棄は怖いから名称等を変更して使えなくする?) 2.二つのテーブルをあたかも一つのテーブルのように使用したい この場合は更新クエリにせず、選択クエリのまま使用すればよろしいでしょう

lovelovelvoelvoe
質問者

お礼

回答ありがとうございます。 また、説明不足で申し訳ありません。 テーブル1は 電話番号と住所の管理専門で使いたいので、 登録データに変更があった場合は 必ずテーブル1を修正したいのです。 また、テーブル1のデータを変更したとき、 テーブル2で参照しているデータも 自動更新がかかるとうれしいので、 更新クエリでやってみようかと思います。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

分からない言葉はヘルプで調べてくださいね 1)テーブル2をテーブルデザインビューで開き住所フィールドを増設する 2)テーブル1、テーブル2をクエリデザインビューに取り込み 電話番号フィールドで結合して、テーブル2の住所フィールドを取り出す 3)クエリの種類を更新クエリに変え住所フィールドの[レコードの更新]欄に テーブル1の住所を指定する 4)更新クエリを走らせる

lovelovelvoelvoe
質問者

お礼

早速の回答ありがとうございます。 アクセス初心者なので、 何をキーワードに ヘルプ参照すればいいのかもわからず。。。 教えていただいた方法で早速 トライしてみます。 ありがとうございました。

関連するQ&A