• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:異なるDB間の異なるテーブルの特定レコード間のリンクは可能か?)

異なるDB間の異なるテーブルの特定レコード間のリンクは可能か?

このQ&Aのポイント
  • Window98, Access2000を使用している場合、異なるDB間の異なるテーブルの特定レコード間のリンクは可能かどうかについて質問です。
  • 住所録DBと家計簿DBをAccessにて作成しています。家計簿DBは長年使っていますが、住所録DBは最近作り始めたばかりです。家計簿DBにあるAccount名と住所録DBにある会社名とのリンクについて、実現方法について知りたいです。
  • また、家計簿DB内のAccount名は会社名と個人名が混在していますが、住所録DBのリンク先テーブルとして、会社名と個人名の両方に対応する方法についても教えてください。

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

  • ベストアンサー
回答No.2

1. リンクテーブル 住所録DB内に、家計簿DBのAccoutテーブルのリンクテーブルを作成するということです。Access のメニューの「ファイル(F)」→「外部データの取り込み(G)」→「テーブルのリンク(L)...」で作成します。リンクテーブルを作成すると、住所録DB内にあたかもAccount テーブルがあるかのように見えるのですが、データの実体は家計簿DBにあります。住所録DB内のリンクテーブルに対してデータの追加や変更、削除を行えば、家計簿DB 内の Account テーブルに対して追加、変更、削除が実行されます。 2.クエリー >特定のレコードのリンクは内容を確認しながら一件一件指定する必要があります。 ということなので、二つテーブルを関連付けるフィールドがないようですね。関連付けさせるためのフィールド(結合フィールド)がなければ、二つのテーブルをリンク(リレーションともいいます。)させることはできません。逆に言うと、二つのテーブルをリンクさせるための作業が、結合フィールドを作成、および結合フィールドにデータをセットする行為になります。 もう少し具体的に書きますと、 Acount テーブルに、ID というフィールドと名称というフィールドがあり、次のようなデータが入っているとします。 ID   名称 --------------------- 0001  山田さん 0002  佐藤さん 0003  鈴木さん 一方、住所録DBの担当者テーブルには番号というフィールドと氏名というフィールドがあったとし、次のようなデータが入っているとします。 番号  氏名 ------------------------ 1000  鈴木 一郎 1051  山田 太郎 1129  山口 努 1131  木村 庄之助 1132  山田 花子 Account テーブルの 0001 と 担当者テーブルの 1132 Account テーブルの 0003 と 担当者テーブルの 1000 をリンクさせたいとします。 方法1.番号を振りなおす Account テーブルか、担当者テーブルのどちらかの番号を振りなおすわけですが、例えば担当者テーブルの番号を振りな直すなら、 番号  氏名 ------------------------ 0003  鈴木 一郎 1051  山田 太郎 1129  山口 努 1131  木村 庄之助 0001  山田 花子 のように、ID と 番号を一致させなければなりません。 方法2.フィールドを追加する フィールドIDとフィールド番号の型(数値型とか文字型とか)が一致していれば、番号の振り直しでもよいのですが、型が一致していなければ、一致するフィールドを追加せざるを得ません。 ↓こんな感じにします。 番号  ID  氏名 ------------------------ 1000  0003 鈴木 一郎 1051  0002 山田 太郎 1129  0004 山口 努 1131  0005 木村 庄之助 1132  0001 山田 花子 今日は疲れましたので、続きはまた今度にします。

jsota
質問者

お礼

分かりやすいご説明有難うございます。住所録DB内の担当者テーブル及び会社テーブルをUnionクエリーにて作った”相手"という新規テーブルに、方法2.のフィールドの追加を考えて見たいと思っています。 この新規のフィールドは家計簿DBのAccountテーブルの番号フィールドとリンクさせるための結合フィールドとし、そのフィールド内に双方が同じ番号になる数字を記入すればよいのですね?  ご説明の”続編”を心待ちにしています。

その他の回答 (2)

回答No.3

ユニオンクエリーのことについて書こうかと思っていたんですけど、もう作られたということなので、続きは止めておきますね。

回答No.1

1)も2)も、「異なるDB」ということは関係ないように思います。リンクテーブルを作成し、それに対してなんらかの操作を行えばよいわけですから。ただし、リンクテーブルの構造の変更はできませんので、構造の変更はリンク元のDBで行わなければなりません。 1)ですが、まず、Accountテーブルに詳細情報が必要か不要かを示すフィールドを作り、Yes/No型で必要ならYes、不要ならNoにするとかにします。会社テーブルにも Accountテーブルの詳細情報が必要か不要かを表すフィールドと同じ型のフィールドを作成し、こちらは全てのレコードの内容を「必要」の値(Yes/No型ならYes)にします。で、Accountテーブルと会社テーブルとを、「IDか何かのフィールド」と「詳細情報が必要か不要か」のフィールドの二つの結合でクエリーを作成すればどうでしょうか。 2)ですが、会社テーブルと担当者テーブルのユニオンクエリーを作成し、そのユニオンクエリーとAccountテーブルを元にしてクエリーを作成すればよいのではないでしょうか。

jsota
質問者

補足

ご返事有難うございます。私の不勉強故に、残念ながら折角の貴ご説明を理解できないのですが、 1. リンクテーブルというのは“第3の”DBを作ってその中に家計簿DBのAccountテーブル(a)と住所録DBの会社テーブル(b)それぞれリンクする第3のテーブルを作って間接的に(a)と(b)をリンクさせる、という意味なのでしょうか?その場合、わざわざ第3のDBと第3のテーブルを作る意味はどういう点にあるのでしょうか? 2. ご説明の中で、クエリーの作成が恐らく特定のレコードをリンクさせる方法のご解説だと思いますが、具体的に上記(a)テーブル中のレコード“ A”と(b)テーブル中のレコード“B”とのリンクのさせ方をご教授いただけないでしょうか? いづれにせよ特定のレコードのリンクは内容を確認しながら一件一件指定する必要があります。 3. 会社テーブル(b)と担当者テーブル(c)のユニオンクエリーの作成、そのユニオンクエリーとAccountテーブル(a)を元にしたクエリーの作成の仕方、上記2項同様、それぞれのレコードのリンクのさせ方のご指導宜しくお願いします。

関連するQ&A