• ベストアンサー

accessで、2テーブル間で複数のリレーションをしたい

access初心者です。 2テーブル間で複数のリレーションをしたいと思うのですが、どうすればよいのでしょうか? 下記例で「担当者」と「対応具体的内容」を結びつける一覧を抽出をしたいのです。 対応のたびに(対応日付ごとに)担当者が違います。 「対応具体的内容」は「対応内容区分」ごとに分け、各担当者が入力している。 擬似例) テーブル1: 顧客ID 対応日付 担当者   テーブル2: 顧客ID 対応日付 対応内容区分 対応具体的内容 こんな感じで、作られてしまっています。 顧客IDでのリレーションで、「テーブル1」の対応日付で抽出すると、担当者と対応具体的内容は一致しません。(1担当者に過去の全ての対応内容が抽出される) また、「テーブル2」の対応日付で抽出すると、その日付の対応内容に対し、過去全ての担当者が抽出されてしまいます。 担当者と対応具体的内容を結びつける為には、 顧客IDと対応日付とを一致させる必要があるように思うのです。 御教授よろしくお願いします。

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

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

事例についてはよく理解できてないのですが、クエリー作成時に複数のリレーションを張ることは可能です。 Aテーブルのリレーション張りたい項目をドラッグし、Bテーブルの対応する項目に動かせばよいのではないでしょうか? はずしていたらごめんなさい。

PearlJam69
質問者

お礼

ありがとうございます。 すぐできました。 初心者のたわごとでした・・・。

その他の回答 (1)

  • marco100
  • ベストアンサー率19% (39/196)
回答No.2

顧客IDと対応日付の2つのフィールドでリレーションを張れば問題ないのではないでしょうか? 担当者は1日中同じ人になるんですよね。 こうすれば、1対応日付に対して、対応具体的内容の行分だけ行が出てくると思いますが。。

PearlJam69
質問者

お礼

ありがとうございます。 すぐできました。 初心者のたわごとでした・・・。

関連するQ&A

  • 複数テーブルのリレーションについて

    こんにちは。 oracleの複数テーブルのリレーションについてご教示頂け ないでしょうか? 実現したいことは下記の通りです。 ■oracleのバージョン oracle 8i 言語 VS2005 VB.net ■実現したいこと  下記の(1)の抽出条件で絞り込んだ(2)の情報を表示 (1)抽出条件  (1)【Table A】の【更新日時】が指定の日時と合致する  (2)【Table A】の【入力者ID】にひもずく     【Table C】の【区分名称】が 指定されたものと合致する (2)表示したいカラム  (1)【Table A】の【入力者ID】に該当する【Table B】の【名前】  (2)【Table A】の【修正者ID】に該当する【Table B】の【名前】 ■■■■■■具体例です■■■■■■■■■■■■■■■■■■■ 各テーブルに以下のようなデータが入力されている場合 画面から下記(1)・(2)の抽出条件がが選択された場合 下記の内容を表示したいと考えています。 ■抽出条件 (1)日時=20009/06/12 (2)区分名称=テスト ■表示結果 入力者 :001-山田 修正者 :002-田中 更新日時:20009/06/12 【Table A】 | 入力者ID | 修正者ID | 更新日時 | ------------------------------------- | 001 | 002 | 20009/06/12 | | 003 | 002 | 20009/06/12 | 【Table B】 | ID | 名前 | 区分NO | ----------------------------- | 001 | 山田 | 1 | | 002 | 田中 | 2 | | 003 | 鈴木 | 2 | 【Table C】 | 区分NO | 区分名称 | ---------------------- | 1 | テスト | | 2 | 本番 | ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 現状以下の方向で進めようとしてるのですが、 これだと「区分名称=テスト」という抽出条件が 追加できずに困っています。 select * from 【Table A】 INNER JOIN 【Table B】 B_1 ON (【Table A】.入力者ID = B_1.ID) INNER JOIN 【Table B】 B_2 ON (【Table A】.修正者ID = B_2.ID) Where 【Table A】.更新日時 = '20009/06/12' 以上、宜しくお願い申し上げます。

  • 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等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

  • Access2000フォームにリレーションしたテーブル内容を入れたい

    Access2000フォームにリレーションしたテーブル内容を入れたい Access2000を利用していますが、フォームにリレーションしたテーブル内容を表示したいです。 具体的には 顧客情報テーブルのフォームに履歴テーブルの情報や、入金テーブルなどを表示したいです。 サブシートでは見づらく入力ミスとかが発生してしまうので・・ よろしくお願いします。

  • Access 複数テーブルをまとめる

    こんにちは! 過去記事を検索しましたが、該当がなく、苦戦しております… お知恵をお貸し下さいm(__)m テーブル T顧客…顧客ID(主キー)、名前、… T書類1…顧客ID(重複キー有)、書類1ID、… T書類2…顧客ID(重複キー有)、書類2ID、… T書類3…顧客ID(重複キー有)、書類3ID、… T書類4…顧客ID(重複キー有)、書類4ID、…  ・  ・  ・ その他に複数同じような構造のテーブルがあります。 テーブル内には他に様々なフィールドがありますが、同一内容の結合できるフィールドは上記のみです。 上記のテーブルですべての書類IDを取ってきたいのですが、 全テーブルを顧客IDと結合し、選択クエリで抽出すると      顧客ID | 名前 | 書類1ID | 書類2ID | 書類3ID | 書類4ID  1  |  Aさん |  10  |  5 |  20  |  26  1  |  Aさん |  10  |  30 |  20  |  25  1  |  Aさん |  10   |  4 |  20  |  26  1  |  Aさん |  10   |  6 |   20  |  25  2  |  Bさん |  30  |  13 |  25  |  5  2  |  Bさん |  30   |  10 |  26  |  5  2  |  Bさん |  30   |  13 |  26  |  5  2  |  Bさん |  30  |  10 |  25  |  5 のような値が出てきてしまいます…当たり前の結果ですが… やりたいこととして、 (1)一つのテーブルかクエリで抽出 顧客ID   名前   書類1ID   書類2ID   書類3ID   書類4ID  1     Aさん   |  10  |  5  |  20  |  26               |     |  30  |     |  25               |     |  4               |     |  6    2     Bさん   |  30  |  13  |  25  |  5               |     |  10  |  26   のように重複をなくし、 (2)更にまとめたものにしたいです。 顧客ID   名前   書類1ID   書類2ID   書類3ID   書類4ID  1     Aさん     10     5,30,4,6     20     25,26  2     Bさん     30      10,13     25,26     5 最終的に上記にまとまったものをフォームにして、顧客IDごとに抽出し、 顧客ごとの各書類のIDはこれとこれですよ!みたいにしたいのです! 説明が下手で申し訳ありませんm(__)m Access初心者で、独学でコツコツやっているので、知識が乏しいです… 調べてみるとユニオンクエリとかでできるような記事はありますが、 SQL文なども理解ができずに苦戦しております… お手数ですが、ご教示の程 よろしくお願い申し上げます。

  • access2000で テーブルに+表示:リレーションしたとき

    アクセスで大きなデータテーブルをいくつかの子テーブルに分解し,各テーブルを共通のID(オートナンバのインデックスキー)により、1:1のリレーション付け(Aテーブル~Bテーブル~Cテーブル)を行ってから、 テーブルを開いてみました。ところがBやCテーブルを開くとそのテーブル内の一番左側に新しいフィールドのようなものができかつ,そのセルに+記号が表示されクリックするとリレーションついたAテーブルの対応するレコードの内容が表示されるのですが、これは処理として正常なのか、どこか私が間違ったことをしているのか,お教え願います。 この+記号について知りたいのですが、ヘルプに説明が入っているのでしょうか。

  • Access 一対一リレーションの編集

    こんにちは 現在、Accessと他のソフトとの連携をするために奮闘しています。。。知恵をお貸下さい。 Accessには元々受注テーブルがあります。 主キーID:オートナンバー 受注日:日付型 納期:日付型 図番:テキスト型 数量:数値 単価:数値 とあり、データがすでに存在しています。他のソフトへエクスポートを継続的に行うにあたって 新規にテーブルを作成し、一対一リレーションをしようとしています。 新規テーブルは 主キーID:オートナンバー 取引先コード:テキスト型 担当者コート:テキスト型 区分コード:テキスト型 実出荷日:日付型 エクスポート状況:数値 そして、受注テーブルと新規テーブルのIDを一対一でリレーションしクエリを作成し、エクスポートしようと思っています。 その際、新規テーブルの方はデータが空なのでクエリ結果が得られないと思うのですが。。。 どうやって既存の受注テーブルと一つ一つのレコードを繋げる事が出来ますか❓ 編集方法をどなたか教えて下さい。 素人ですみません。

  • Access2003 リレーションされたサブフォームの抽出

    Access顧客情報のデータベースを正規化(VBA)している初心者です。リレーションされているテーブルを元にクエリ(3つのテーブルをつなげただけ)を作成しメインフォームにサブフォームを作りました。3つのテーブルは、1対多でリレーションされています。テーブルAのGR_IDやグループ名で検索しそれに紐づいているCOmpanyは抽出できるのですが、サブフォームのテーブルBのCOmpany nameから抽出することができません。メインフォームからオプションボタンを使用してメインとサブの両方のテーブルを検索したいので、子・親リンクの設定をはずせませんよね?以前の類似質問で「サブフォームのフィルターに入力し、フィルター実行でうまくいきました」とありましたが、具体的にどのように設定(マクロやVBA、再クエリ?)すればいいのかわからず悩んでいます。どうぞ初心者向きのアドバイスをよろしくお願いいたします。 テーブルA GR_ID グループ名 ※テーブルA(1):テーブルB(多) テーブルB GR_ID Company_ID Company name ※テーブルB(1):テーブルC(多) テーブルC Company_ID salesman

  • ACCESSのリレーション

    3つのテーブル間でリレーションを組んでいる場合のクエリについて教えてください。 言葉では説明し辛いので表記方法のルールを・・・ <ルール> テーブル→A、B、C レコード番号→1、2、3・・・ Ex.テーブルAのデータ番号1 → 「A1」と表記   テーブルCのデータ番号3 → 「C3」と表記 <前提> テーブルA、B、Cのそれぞれに「顧客ID」というフィールドがあり、これを根拠にリレーションをとっています。A、B、Cは「顧客ID」と言う点ではつながりがありますが、BとCとは「顧客ID」という以外につながりがりがありません。 <出力したいレポートの形> 大見出しをA1、A2、A3とした上で、A1に関係するBテーブルのデータ、Cテーブルのデータを集めたいのです。 この場合、BとCのデータは単純に小分類としてそれぞれが素直にAに関連するものだけがおかれるだけにしたいです(BとCを絡めたたくない)。 具体的には、 [A1] --[B1 B3 B5] --[C2 C5 C7] [A2] --[B2 B4] --[C1 C8] [A3] --[B7 B8] --[C3 C4 C6] というふうにしたいのですが・・・ 実際には、 [A1] B1 C2 B1 C5 B1 C7 B3 C2 B3 C5 B3 C7  ・  ・  ・ という感じでBとCも絡んだ形になってしまいます。 そのため、クエリのデータを見てもものすごい量になっています。 リレーションの組み方で解決できるものなのでしょうか?それとも、クエリをAとB、AとCのものにそれぞれ分けて、レポートも別々に出力するしかないのでしょうか?出来れば1つの表にしたいのですが・・・

  • Filemaker5のリレーションについて

    -ポータルからリレーションン先のもとのレコードにボタン一つでとぶ方法を教えて下さい-  Filemaker5を仕事に使っています。一つ一つのレコードに顧客の名前と顧客ID、受けた注文内容、日付を記録しています。顧客IDによるリレーションを使い、ポータルで以前に入力した日付が一覧で表示されるようにしています。ポータルで示された日付の内の一つのレコードにボタン一つでとぶようにするには、どういうスクリプトを組めばよいでしょうか?

  • Access リレーションが分かりません。

    こんにちは、Access初心者です。 現在の受注テーブルをIDベースでCSVでエクスポートするシステムを追加しようと思っているのですがイメージがわきません。 同じデータベースにCSVテーブルを新規で追加し受注テーブルのIDとCSVテーブルの受注IDを一対多でリレーションをしました。(受注テーブルにはデータが入っていますがCSVは新規です。) 受注テーブル ID:オートナンバー 納期:日付 品番:テキスト 数量:数値 CSVテーブル ID:オートナンバー 状況:テキスト...未と済をコンボボックスで選択式 受注ID:数値 メインフォームでCSVテーブルの状況ベース、受注テーブルの納期ベースでデータを抽出 サブフォームで上記条件のデータが見れるように作ろうとしました。 ですが、サブフォームクエリの段階でデータが新規入力レコードしか表示されてきません。 どうしたら、受注テーブルの一つ一つのレコードにCSVテーブルのレコードが結びつけられますか。 ど素人ですみません。

専門家に質問してみよう