アクセスで、1つのフィールドに2つのリレーションをかけると

このQ&Aのポイント
  • メールのデータベースで、1つのフィールドに2つのリレーションを設定することは可能ですか?
  • リレーションを設定することで、メールの送信先とCCリスト、BCCリストを関連付けることができます。
  • しかし、この方法では表示はできますが、入力や更新ができなくなる可能性があります。
回答を見る
  • ベストアンサー

アクセスで、1つのフィールドに2つのリレーションをかけると。

メールのデータベースを作っています。 T_メール本体のテーブル (フィールド項目は) ID(主キー) 宛先名 件名 本文 T_CCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 T_BCCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 これに、T_メール本体のIDとT_CCリストのIDをリレーションさせて さらに、T_メール本体のIDとT_BCCリストのIDをリレーションさせると いうのは可能でしょうか?こうすると、表示は出来ますが、入力及び更新が出来なくなるのですが。 以上、よろしくお願い致します。

  • hiroi
  • お礼率89% (223/248)

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

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

リレーションの結合の仕方はどのようになっていますでしょうか。 1対1の結合でINNER JOINかLEFT JOINで結合されていればクエリ内にフィールドを追加すれば更新等できるはずなのですが。

hiroi
質問者

お礼

O_cyanさん アドバイスどうもありがとうございます。 申し訳ありません。また連絡しますので(たぶん、明日以降)その時、よろしくお願いします。 時間があまり取れないので。

hiroi
質問者

補足

申し訳ありません。間違いでした。あなたの仰るとおりです。問題はありませんでした。 実をいうと別の問題が原因で、これをまた新たに質問しますので、よろしくお願いします。

関連するQ&A

  • アクセスで、リレーションシップをかけると更新出来ない?

    すみません。以下の事項を教えて下さい。 テーブル名:T_メール本体 (フィールド項目は) ID(主キー) 宛先名 件名 本文 テーブル名:T_宛先リスト (フィールド項目は) 名前 アドレス この2つのテーブルに、宛先名と名前のフィールドをリレーションシップをかけると未定義と出ます。このクエリー:SELECT T_メール本体.宛先名, T_メール本体.件名, T_メール本体.本文 T_宛先リスト.アドレス FROM T_メール本体 LEFT JOIN T_宛先リスト ON T_メール本体.宛先名 = T_宛先リスト.名前; は、ただ表示が出来るだけで、内容の変更更新、追加が出来ないんです。どこかがおかしいんでしょうか? よろしくお願いします。

  • Accessのリレーションのことについて

    すいません、お世話になります。 次のようなテーブルがあります。 テーブル 【営業所データ】 フィールド  営業所ID(キー)        営業所名        住所 デーブル 【社員データ】 フィールド  社員ID(キー)        営業所ID        社員名 デーブル 【社員写真】 フィールド  社員写真ID        社員ID        店舗ID        社員写真 【営業所データ】の営業所IDと【社員データ】の営業所IDがリレーションで、同じく 【社員データ】の社員IDと【社員写真】の社員IDがリレーションで結んであります。 【社員データ】を基にしたクエリがあり   社員ID   営業所ID   営業所名   社員名 となっているので、営業所名は営業所IDを入力することによって、フォームにおいては自動表示されます。 さて、次が質問になるのですが、 【社員写真】を基にしたクエリがあります。   社員写真ID   社員ID   社員名   営業所ID   営業所名   社員写真 社員IDを入力することで、フォームにおいては社員名・営業所IDが自動表示されるのですが、営業所名を表示することができないで困っています。 基本的な事項だとは思いますが、わからなくなってしまいました。よろしくお願いいたします。        

  • Sqliteリレーションについて2

    連続投稿すみません。 ■利用環境 Sqlite3.3.5 ■質問 リレーションの概念について、理解できない部分があり 質問させてください。 下記のようなテーブルが1:Nのリレーション関係 にあった場合、お互いのテーブルにリレーションを 貼っていれば、テーブルAのある行データを削除した ときに、テーブルBの同外部キーに該当するデータも 連動して削除されるのでしょうか? それとも、自身で削除する必要があるのでしょうか? テーブルA(主キー蔵書ID) 蔵書ID 購入日 書名 テーブルB(主キー貸し出しID 外部キー蔵書ID) 貸し出しID 蔵書ID 貸し出し日 借りた人 

  • ACCESS 1つのフォームに2つのリレーション

    ふさわしいタイトルが思いつかず、「ACCESS 1つのフォームに2つのリレーション」というタイトルにしてしまいましたが、 タイトルと質問内容が食い違っていましたらすみません。 ペット(熱帯魚)の交配、繁殖をしており、今まではノートに交配記録をつけていたのですが、 ちょっと記録が複雑になってきたのでACCESSでデータベースを作ろうと思って試作でいろいろ試しています。 ACCESSでは簡単な顧客ファイル程度のことは作れるつもりです。 環境は、Win7、ACCESS2010です。 テーブル構成は ◆T_品種マスター  ・品種ID  ・品種名 ◆T_ラインマスター(血統の管理用)  ・ラインID  ・品種名(T_品種マスターよりルックアップ)  ・品種記号(A1、A2、B3など血統により重複のない記号をテキストで格納)  ・飼育開始日  ・  ・  ・ ◆T_交配マスター(どのペアで交配したか)  ・交配ID  ・交配日  ・オス親ID(現状手入力でT_ラインマスターのラインIDを入力)  ・メス親ID(現状手入力でT_ラインマスターのラインIDを入力) ●F_新規交配(★このフォームを完成させたい) テーブルソースはT_交配マスターです。  ・交配ID(オート)  ・交配日  ・オス親ID(現状はT_ラインマスターよりオス親に使用した魚のラインIDを入力)  ・オス親品種名(フィールドを追加してリレーションの設定をしてオス親IDを入力したときに品種名を表示したい)  ・メス親ID(オスと同じ)  ・メス親品種名(オスと同じ) というテーブル構成、フォーム構成です。 今頭を抱えているのは、 T_交配マスターをもとにしたフォームウィザードで「F_新規交配」というフォームを作りました。 ちょっと発展させて、「オス親ID」に交配に使用したオス親のラインIDを入力したときに、 その品種名を表示させるために、ACCESSメニューの「デザイン」-「既存のフィールドの追加」- 「すべてのフィールドの追加」-「他のテーブルで利用可能なフィールド」-「T_ラインマスター」の 「品種名」をフォームにドラッグしました。 その際、「リレーションシップの指定」ダイアログが出るので、 T_ラインマスターの「ラインID」とT_交配マスターの「オスID」を関連づけました。 この状態では、問題なくオス親IDにラインIDを入力すると、品種名が表示されています。 次に「メス親ID」に交配に使用したメス親のラインIDを入力したときにも同じことをしようと、 同じように、もう一つフィールドリストより「品種名」フィールドを追加しました。 当たり前ですが、オス親IDを入力すると、オス親用に用意した品種名フィールド、メス親用に用意した品種名フィールドに同じ内容が表示されてしまいます。 ●説明が長く、わかりにくくなってしまいましたが、やりたいことは、 オス親IDにオス親に使ったライン(血統)のラインIDを入力したときはその品種名が、 メス親入力したときにはメス親の品種名がそれぞれのフィールドに表示させたいと思います。 アドバイスよろしくお願いします。

  • Access2000のリレーションシップのエラーについて

    どのくらい説明すればいいのかわからないのですが、アクセス2000でリレーションシップの設定をするときに、 「主テーブルで参照されているフィールド用の固有インデックスがありません。」 というエラーメッセージが出てきてリレーションを作る事が出来ません。 問題なのは3つのテーブルのリレーションなのですが、それぞれのインデックスをチェックすればいいのだとは思いますが、対象となったフィールドは主キーではないので、重複は許可していますが、一応どちらもインデックスは作成しています。 どのようなリレーションシップかというと、業者テーブルと商品テーブルと販売履歴テーブルのリレーションで、 商品テーブルの業者IDと業者テーブルのIDのリレーション→左内部結合(商品テーブルの全フィールドに入れる) 業者テーブルの業者IDと販売履歴の業者IDのリレーション→右内部結合 は出来るのですが、商品テーブルの商品名と値段フィールドと、販売履歴の対応する部分についてのリレーションについてもたせようとするとエラーが出てしまいます。このようなリレーションはいらないのでしょうか? どちらも固有の値でない量のリレーションだからなのでしょうか? この二つのフィールドの参照整合性をどう保てばいいのか教えて下さい。

  • ACCESSのリレーションが切れてしまいました

    素人で甚だ恐縮ではございますが、社内システムのACCESS2003のデータベースでリレーション定義が無くなってしまい、アプリで削除していないにも拘わらず主たるテーブルのレコードの各項目に"deleted"或いは"#deleted"が入ってしまいました。 リカバリーは、「データベースの最適化/修復」を行い、リレーションを定義していた先のテーブル内のレコードを削除し、再度リレーション定義し再登録にて回復しました。 リレーションが切れる(無くなってしまう)原因がわかりません。 どういったケースで発生しうるかご教示頂ければと存じます。

  • Accessでのエラー

    Access修行中の身で、勉強をかねて書類BOXのデータベースを作成中です。 親テーブルのフィールド  ID(主キー、オートナンバー)、タイトル名、・・・・・、保存箱ID 子テーブルのフィールド  保存箱ID(主キー、オートナンバー)、保存箱名、・・・・ リレーション  親:保存箱ID-子:保存箱ID という構成です。 クエリで以下のような複合テーブルを作成し、 複合テーブルのフィールド  ID(主キー、オートナンバー)、タイトル名、・・・、保存箱名、・・・・ データを入力しようとすると、「レコードを追加できません。テーブルの結合キーがレコードセットにありません。」というエラーがでます。また、保存箱IDに入力のないレコードは、抽出されません。 どのようにしたいかというと、保存箱IDは入力しなくてもいいフィールド(関連させなくてもよいデータ)にしたく、複合テーブルで保存箱名を入れると、子テーブルに新たにレコードが追加されるようにしたいです。 できれば、SQLを使用せずに解決したいと甘えておりますが、無理でしょうか。

  • Accessで質問です

    現在Accessでデータベースを練習で作っているのですが、フォームでIDを入れるとテストの名前が出るようにしています。(例:ID:0001を入れると自動的にテスト名:テスト1)が入力される。 これを逆にテスト1を入れるとID0001が入力できるようにできますか? テーブルとクエリは以下のようになってます。 Tテスト ・テストID(主キー) ・テスト名 T生徒 ・生徒NO(主キー) ・生徒名 ・テストID(TテストのテストIDとリレーション) Q各受験テスト ・生徒NO ・生徒名 ・テストID ・テスト名 フォームは「Q各受験テスト」を元に作っています。(すべての項目を使っています) リレーションの関係で当然「テストID」を入れると「テスト名」は自動的に入るのですが、逆のことをしたいのです。「テスト名」を入れると「テストID」が自動的に入るようにしたいのです。 よろしくお願いいたします。

  • phpMyAdminの「リレーションを表示する」について

    テーブル間のリレーションについて質問です。 phpMyAdminを使ってMySQLのデータベースにテーブルを作成しています。 今、顧客のテーブル「Customer」と業務のテーブル「Order」があったとして、 ----------------------------------------------------- 【Customer】 [CustomerNo] int型 主キー設定 [CustomerName] varchar_20 [PostName] varchar_20 [Address] varchar_30 [TelNumber] varchar_20 【Order】 [CustomerNo] int型 主キー設定 [OrderName] varchar_10 ---------------------------------------------------- としています。 ここでCustomerテーブルのCustomerNoとOrderテーブルのCustomerNoで リレーションを組もうと思いました。そこでOrderテーブルでリレーションを表示するを選択し、 CustomerNoのフィールドで「Customer -> CustomerNo」を選択し保存するを押したのですが、 「インデックスは設定されていません。 (CustomerNo)」というエラーが帰ってきました。 これはどうすればリレーションを組むことができるのでしょうか? ググッて調べてみたのですが、それっぽい情報が無かったものでして質問をさせていただきました。 どなたか宜しくお願い致します。

  • Access、同じテーブルの2つの項目対他のテーブルで1つの項目のリレーションは可能?

    Accessで販売管理をしています。 以下のテーブルを作成し(*は主キーです)、 [売上T]  [商品M]  [顧客M]  [受注T] *売上NO  *商品ID  *顧客ID1  *受注NO 商品ID   商品名    *顧客ID2  商品ID 日付    顧客ID1     顧客名    受注日 金額    顧客ID2            受注金額        受注先1        受注先2 参照整合性にチェックを入れリレーションでつないでいます。 リレーションシップは下記のとおりです。 [売上T]商品ID―[商品M]商品ID―[受注T]商品ID [商品M]顧客ID1及び2―[顧客M]顧客ID1及び2―[商品M]受注先1及び2 ここで顧客と受注先が重複することもあるので、顧客Mから顧客ID及び受注先IDの2つのテーブルにリレーションシップを設定しているのですが、 クエリで  [受注T]受注NO及び受注金額、[顧客M]顧客名で抽出したところ、 5000件以上[受注T]にデータがあるはずのものが、1200件ほどしか抽出できませんでした。 ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し、 [商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2 とリレーションを作成し、クエリで抽出するとうまくいきました。 しかしこの方法だと、[顧客M]と[受注用顧客M]という2つのテーブルを管理しなければならなくなるので面倒です。 そこで質問です。 同じテーブルの2つの項目対他のテーブルの1つの項目とでは、うまくリレーションが設定できないのでしょうか。 もし出来ない場合、[顧客M]と[受注用顧客M]の2つのテーブルを管理しなければならない訳ですが、 なんとか簡単に管理できる方法(ひとつのテーブルを変更すると簡単にもうひとつが変更できる設定)はないでしょうか。 非常にわかりにくく長い文章で申し訳ありません。 VBA等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

専門家に質問してみよう