• 締切済み

Accessで3つのテーブルの結合とフィールドについて教えてください。

Access2003を使用しています。 「取引先マスタ」テーブルに契約の情報ものせることにしました。 契約は今のところ2種類ありますが、3種類になる可能性もありそうなので、応用が利くようにサブフォームにしました。http://questionbox.msn.co.jp/qa3473958.html 契約内容では弊社の誰が担当したのかわかるようにしたいです。 けれど担当者は新たにフィールドを設けずに、担当者マスタのテーブルから引っ張ってきたほうが良いのかなと思いました。 とすると、契約のテーブルには担当者IDだけでも加えないと結合できないなと思いました。 質問1.この考え方であっているでしょうか? 各テーブルは下記のようになっています。 質問2.T取引先マスタとT担当者マスタに「担当者」という同名のフィールドがありますが、意味合いは違います。これは「取引先担当者」と「弊社担当者」と名前を分けたほうがよいのでしょうか? 一緒でもなんとかいけるものでしょうか? テーブルの正規化いうものがしっかりと理解できていないので正しいのかどうがわかりかねています。 この3つのテーブルを結合させて、フォームとレポートを作りたいのです。 そして、契約締結済みと未締結との取引先に抽出わけをしたいのです・・・が、ここでつまずいてしまって困っております。 お手数をおかけして申し訳ないのですが、どなたかご教示ください。 よろしくお願いいたします。 T取引先マスタ  ID  取引先ID  取引先名  フリガナ   部署名   担当者名・・・・・・取引先の担当者名  郵便番号  都道府県  住所1  住所2  電話番号  FAX番号  URL  電子メール  備考   T取引先_契約内容  ID  取引先ID  契約種別・・・・・・基本と業務委託がある  契約締結日  契約終了日  契約者役職  取引先契約者名  担当者ID・・・・・・弊社の担当者を判別するもの。T担当者ますたと結合する。 T担当者  担当者ID  並べ替え  担当者名  フリガナ  備考  

  • 375k
  • お礼率60% (176/289)

みんなの回答

noname#140971
noname#140971
回答No.1

服飾デザイナでプログラマではありませんので参考程度にして下さい。 そして、かなり私流に改ざんしております。 そして、質疑に無関係と思われる列は割愛しています。 担当者: ID___並び順____名前_________読み _1__________1____山田 太郎___ヤマダ タロウ _2__________2____田中 次郎___タナカ ジロウ ・私は、主キーは[ID](長整数)で統一しています。 [担当者].[ID]、[担当者]![ID] という表現することが多いのでこれで良いと思っています。 取引先: ID___名称___読み____部署名___担当者名 _1___A社_____Aシャ___営業______鈴木 一郎 _2___B社_____Bシャ___総務______中村 主水 [取引先].[名称]、[取引先]![名称] と表現することが多いのでこれで良いと思っています。 契約履歴: ID__担当者_ID____取引先_ID___締結日_________[取引先_担当者名] _1______________1_______________1___2007/11/01___木下 五郎 _2______________2_______________2___2007/11/02___山下 信次 ID__担当者_ID____取引先_ID___締結日_________[取引先_担当者名] _1___山田 太郎___A社___________2007/11/01___木下 五郎 _2___田中 次郎___B社___________2007/11/02___山下 信次 後は、ルックアップ設定後にテーブルを開いたものです。 ・[担当者_ID]、[取引先_ID]、[取引先_担当者名]・・・いずれも、<テーブル名+列名>で命名。 >そして、契約締結済みと未締結との取引先に抽出わけをしたいのです・・・ これは、テーブル設計には関係ないと思います。 特定期間の[契約履歴]から[取引先_ID]をユニークに抽出した結果を XXXX JOIN すれば事足りるのでは??? ※適当に参考になさって下さい。

375k
質問者

お礼

抽出条件に応じたレポート作成のところでつまづいたままです。 アドバイスをいただいたのに、理解することができませんでした。私の力のなさです。 実際に試してから締め切りたかったのですが、次の質問を投稿したいため、この質問は締め切らせていただきます。 教えていただいたのに申しありません。 ご回答ありがとうございました!

関連するQ&A

  • Access2000のテーブルのフィールドについて

    Accessのテーブル設計で困っています。 担当者マスターテーブルに担当者CD(主キー)と担当者名のフィールドが入っています。取引先マスターテーブルには取引先CD、取引先名、担当者を2名いれたいのですが、どのようにしたらいいかわかりません。ひとつの取引先に2名の担当者がいる場合どのように管理をしたらいいでしょうか。1つの取引先に対し、1名の担当者だったら、担当者CDをいれクエリで出すことが出来るのですが、2名となるとどうなのでしょう? どなたかご教示ください!よろしくお願いいたします。

  • Accessのレポート作成について教えてください。

    Access2003を使用しています。 「T取引先マスタ」と「T取引先の契約内容」があります。 それをT取引先マスタを親とし、T取引先の契約内容を子サブフォームとした「F取引先と契約内容」を作りました。 連結フィールドは取引先IDです。 次に「F取引先と契約内容」の項目全てをレポートにしました。(T取引先マスタとT取引先の契約内容をクエリで連結させました。) レポートは3種類必要です。 契約状況がキーになります。 1.契約の有無に関わらず取引先マスタ詳細すべて。 2.契約締結している取引先マスタ詳細すべて。 3.契約締結していない取引先マスタ詳細すべて。 契約締結日のところに「Null」値で条件付けしました。 1.は問題なく作成できました。 2.3.がうまく出来ません。 取引先IDが2件出てしまうのです。 取引先ID 取引先のもろもろの情報 契約種類 101    ・・・           基本 101    ・・・           業務委託 101    ・・・           基本 101    ・・・           業務委託 契約種類は「基本」と「業務委託」の2種類があります。 クエリのデータシートでは次のようになっています。 取引先ID-契約種類  101  - 基本  101  - 業務委託 取引先IDはひとつとして、サブフォームの2種類の契約内容を契約締結日をキーとした条件抽出のレポートを作成するには、どのようにしたらいいのでしょうか? 取引先ID-契約種類  101  - 基本  101  - 業務委託    102  - 基本  102  - 業務委託 どなたか教えてください! 宜しくお願いいたします。

  • アクセスでフォームに追加項目を増やす場合、サブフォームにしたほうがよいのか、しないほうがよいのか教えてください。

    Access2003を使用しています。 「取引先マスタ」という取引先の住所などが入ったフォームに契約書に関するデータも入力できるようにして欲しいと依頼が入りました。 それは契約の種別ごとに「契約締結日」、「取引先契約者」、「弊社担当者名」を設けます。 このような場合、契約書に関するデータは別のテーブルに入力してサブフォームにしたほうがよいのでしょうか? それとも「取引先マスタ」と同じフォームのなかに入れたほうがよいのでしょうか? あとで支障が出にくい方法をとりたいのですが、Accessに熟練されている方はどちらの方法を取られているのでしょうか? アドバイスをお願いいたします。

  • 3つのテーブルの結合

    access2000にて作業しています。 下記のようなテーブルが3つあります。 [納品T] 年月日|顧客番号|品名|数量 [品名マスタ] 顧客番号|品名 [顧客マスタ] ID|顧客名 納品クエリを作り デザイン画面で [納品T]品名と[品名マスタ]品名を結び [納品T]顧客番号[顧客マスタ]IDを結んで クエリを表示すると、[納品T]のレコードより少なくなってしまします。 その原因は、別の顧客で品名が同一なものがあることが原因と思うのですが、[納品T]と納品クエリのレコード数を一致させるには、SQLはどのように書けばいいのでしょうか。

  • テーブルの結合について

    親テーブルに対して子テーブルが複数あるときの結合方法がわかりません。 テーブル2、3はそれぞれマスタテーブルの値を格納しています。 具体的には4つのテーブルを結合しテーブル1のname項目、テーブル2のtest項目、area_id、pref_idで検索をしたいです。 right joinで結合してみましたが、テーブル3、4でテーブル2のtest_idを2回参照するのでエラーがでてから先に進めない状況です。 他の回答を読んだのですができなかったので質問させてください。 お分かりの方教えてください。 よろしくお願いいたします。 [teble1] ID | name 1 佐々木 2 鈴木 3 田中 [teble2] test_id | ID(table1の値) | test 1 1       テスト1 2 1       テスト2 3 2       テスト3 [teble3] test_id | area_id 1    1 1    4 2    3 [teble4] test_id | pref_id 1    1 2    2 2    5 3    2 バージョンは4.0.27です。

    • ベストアンサー
    • MySQL
  • 異なるデータベース間のテーブル結合

    DB名:db1 TABLE名:得意先マスタ DB名:db2 TABLE名:ユーザマスタ 以上のように、異なるデータベースに存在する2つのテーブルをLEFT JOINさせたいです。 結合条件は ユーザマスタ.得意先コード = 得意先マスタ.得意先コード とします。 この場合の結合方法を教えてください。 以下のようなSQL文を書いても駄目でした。 SELECT * FROM db1.ADMINISTRATOR.得意先マスタ AS  得意先マスタ   LEFT OUTER JOIN db2.ADMINISTRATOR.ユーザマスタ AS ユーザマスタ ON ユーザマスタ.得意先コード = 得意先マスタ.得意先コード よろしくお願いいたします。

  • 今更ながらAccess2000の結合について

    たとえば下記のようなテーブルがあります。 *得意先テーブル 得意先ID 得意先名称 得意先TEL  ・  ・ *取引履歴テーブル 得意先ID 商品ID 商品 取引日  ・  ・ 上記テーブルの得意先IDを主キーとして、Access2000のリレーションシップの画面で結合させることと、クエリのデザイン画面でテーブルを結合させる事は同じ事をしているのでしょうか? 同じだとすれば、どちらか一方のみを設定すればよいのでしょうか? 違うとすれば、リレーションシップの画面で設定することと、クエリのデザイン画面で設定することの意味の違いを教えていただけないでしょうか? ちょっと混乱しているので、おかしな質問をしておりましたらすみません f^^; どうぞよろしくお願い致します。

  • 私が考えたAccessのテーブル設計に問題がないか教えてください。

    Access2003を使用しています。 前任者が作成したデータベースに修正を加えています。 顧客からの問合せを記録しているT対応履歴という名のテーブルがあります。 対応履歴ID・・・主キー(オートナンバー型) 顧客No 顧客名 商品番号 問合せ区分 問合日 完了日 弊社担当者 内容 原因 対応 備考 などがあります。 その中に修理料金が発生し、修理を依頼した取引先との記録も残すフィールドを加えました。 でも、これは1レコードにつき全て発生するというわけではなくて、どちらかと言えばまれです。 内容としては、次のものがメインになります。 数量 実施日 請求日 支払日 入金確認日 取引先ID・・・取引先テーブルとつながっているため必要 テーブルの設計をするのがはじめての頃だったので、対応履歴の中に加えてしまいました。 別々のテーブルにわけることも考えたのですが、フォームやレポートのリンクがうまくいかなかったので結局一緒にしてしまいました。 やはりこのような場合は、テーブルをわけたほうがよかったのでしょうか? そのように思うのですが、設計の自信がないため確認させていただきたいのです。 今のところ、その料金が発生した場合のデータは10件ほどです。 今からでも、テーブルをわけたほうがよいのでしょうか? 2ヵ月後ぐらいには料金が発生するような事例が増えると言われています。 直すなら今のうちだと思っています。 設計にお詳しい方、どうぞよきアドバイスをいただけないでしょうか? よろしくお願いいたします。

  • ACCESSのテーブル結合に関して

    初歩的な事で申し訳ありませんが、教えて下さい。 以下のように3つのテーブルが存在し、検索条件をBテーブルの仕入先コードが"AAA"と 指定した際に、 発注番号、発注日付、仕入先コード、仕入先名 という形でOUTPUTしようと考えています。 その場合、クエリではどのように結合すれば良いでしょうか。。。 Aテーブルの発注番号とBテーブルの発注番号、Bテーブルの仕入先コードとCテーブルの 仕入先名という結合の形では、条件の"AAA"が1件しかないにもかかわらず、複数件出力されて しまうかと思われます。 《テーブル内容》 Aテーブル 発注番号 発注日付 Bテーブル 発注番号 仕入先コード Cテーブル 仕入先コード 仕入先名 ※ Bテーブル、Cテーブルの仕入先コード"AAA"は、それぞれ1件ずつしかない。 教えて頂きたいと思います。

  • クエリ作成でどちらのフィールドが正解ですか

    Access初心者です。 Access2010の学習をしています。 主キーと外部キーで関連付けられた フィールドをクエリで抽出する場合、 デザイングリッドにドラッグするフィールドは、 どちらのフィールドを選べばよいのでしょうか? ---- 「T担当者マスタ」と「T得意先マスタ」をもとに 「Q得意先マスタ」を作成したい場合です・・・ 「T担当者マスタ」のフィールド 担当者コード(主キー) 担当者名 「T得意先マスタ」のフィールド 得意先コード(主キー) 得意先名 フリガナ 〒 住所 TEL 担当者コード(外部キー) 担当者名 デザイングリッドにドラッグするフィールド 得意先コード 得意先名 フリガナ 〒 住所 TEL 担当者コード(※主キーのフィールドを選ぶのは不正解ですか?) 担当者名 ----- 担当者コードは元となるテーブルの両方に存在する わけですが、どんな理由でどちらを選ぶのか 理解できません。 テキストの問題なのに情けないです・・ ご教授ください。