• ベストアンサー

ACCESSのリレーションシップ設定について

お世話になっております。 添付画像にありますように、3つのテーブルからデータを抽出する クエリーを作成したいのですが、リレーションシップをどのように 設定すればよいか教えてください。 いろいろ試したのですが、以下のような問題が発生し、困っています。 ・クエリーに新規データを入力できない。もしくは、既存データを修正できない。 ・クエリーに誤った組み合わせが抽出され、データ数が3倍くらいなる。 よろしくお願いします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

ACCESSでは直列のリレーションは許されますが 並列はお気付きのように問題があります。 解決策は希望するクエリと同じ項目のテーブルにします。 但し、製品のフィールドは不要です。 まだ気になるところがあります。 補足願います。 1.希望するクエリーに年月無いのはどうしてですか 2.売上テーブル、生産テーブルは製品―月で1レコードですか ACCESSでは直列のリレーションは許されますが 並列はお気付きのように問題があります。 解決策は希望するクエリと同じ項目のテーブルにします。 但し、製品のフィールドは不要です。 まだ気になるところがあります。 補足願います。 1.希望するクエリーに年月無いのはどうしてですか 2.売上テーブル、生産テーブルは   製品―月で複数のレコードになりますか 補足によりテーブル設計に変更が生じます

その他の回答 (3)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

ACCESSでは直列のリレーションは許されますが 並列はお気付きのように問題があります。 解決策は希望するクエリと同じ項目のテーブルにします。 但し、製品のフィールドは不要です。 まだ気になるところがあります。 補足願います。 1.希望するクエリーに年月無いのはどうしてですか 2.売上テーブル、生産テーブルは製品―月で1レコードですか

KASHIYADE
質問者

補足

お世話になっております。 アドバイスに深謝いたします。 以下、ご連絡させていただきます。 1.売上テーブルと製品テーブルの「製品」について  間抜けな回答をしてしまい申し訳けありません。  この「製品」は、製品テーブルにある「製品名」と同じです。  売上および生産テーブルに同じ「製品名」を入れる設定にしました。 2.クエリに「年月」がない理由  説明漏れです。「年月」は必要です。 3.データについて  入力するデータは、一商品の一ヶ月の実績をまとめて入力する予定です。 3.テーブルの再構成  1)いただいたアドバイスを踏まえ、以下のテーブルを作成しました。    ID オート(主キー)   製品コード(数値)→製品テーブルとリレーション   年月(YYYY/MM)   生産数量(数値)   売上数量(数値)  2)このテーブルに基づき、クエリで累計在庫を計算する場合、DSUM関数を使用すればよいのか   教えてください。また、恐縮ですが、DSUM関数の数式についても教えていただけると助かります。 よろしくお願いします。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 売上テーブルと生産テーブルの「製品」は製品コードです。 いやいや、テキスト型の列の話ですよ? 製品コード列(数値型)は別に定義してあるじゃないですか。 テーブル結合を製品コードと製品(名)の2つで行ってるのかな? だったら同一コードで名称相違データが存在するのが レコードが増える原因。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

売上テーブルと生産テーブルの「製品」とは何?もしや製品名? 製品コードのみで連結しても3倍になるんですか? 「希望するクエリ」に登場しない列にNotNullの属性がある(ID列)ので更新は不可

KASHIYADE
質問者

補足

お世話になっております。 アドバイスありがとうございました。 売上テーブルと生産テーブルの「製品」は製品コードです。

関連するQ&A

  • マイクロソフト アクセス リレーションシップの扱い方について

    よろしくお願いします。アクセスで作成したテーブル、例えばAとBには共通の番号があります。それぞれは各テーブル内で番号がいくつか重複しています。この番号により、リレーションシップの関連付け(参照整合性は行わず)を行った後、クエリで抽出したところ、ところどころ同じデータが発生して、膨大な量になってしまいます。参照整合性・フィールドの連鎖更新・レコードの連座削除をチェックして再度リレーションシップを作成しましたが、主テーブルで参照されている固有のインデックスが見つからないとのエラーメッセージが出ます。このテーブルA・Bを使用してデータが重複しないようにクエリで抽出する事はできますか。

  • アクセスリレーションシップについて

    こんにちは。 リレーションシップでテーブルとクエリをつないでいます。テーブルは5つあり、その中から例えば名前を入れて検索を掛けると、その5つのテーブルから該当するものを抽出したいのですが、どのようにしたらいいでしょうか?? 一応テーブルをす繋げるところまでは出来ていますので、検索して抽出をかける方法を教えて頂ければと思います。 説明が不十分かもしれませんが、ご教授願います!

  • アクセスでのリレーションシップの設定方法を教えてください。

    こんばんは。アクセス初心者です。フォームで入力して、テーブル、クエリですぐに反映させるにはどうしたらよいのでしょうか?私が今作成しようとしているデータベースは次のようなものです。  病院にて(1)患者マスター(患者IDと名前、年齢、性別など)のテーブル、クエリ、フォーム。(2)検査件数(患者ID、名前、年齢、検査材料、検査依頼日、発生した細菌など)のテーブル、クエリ、フォーム。 これらは作ったのですが、リレーションシップの仕方がよく解らないのでここから進めません。例えば、(2)検査件数のフォームで患者IDを入力したら自動的に名前、年齢、性別が入力されるようにしたいのですが。 よろしくおねがいします。

  • Accessのクエリでデータの入力ができません

    Access2000を使っている超初心者です。 参考書に基づいて、2つのテーブルをリレーションシップして、選択クエリを作成したのですが、このクエリから既存データの修正をしようとすると入力できません。また、最終行に*マークの新規データ入力欄がなく、データの追加もできません。 フォームの方もこのデータソースをテーブルのひとつににすると*マーク行が出て入力できるのですが、このクエリにすると*マーク行が出てこないです。 参考書のとおりやってるつもりなのですが、何が原因でしょうか? よろしくお願いします。

  • アクセスのリレーションシップとクエリ

    私は、アクセスの初心者です。なので、難しいことはよく分からないのですが、アクセスではある1つのフィールドをキーにしてくっつけたりすることができるじゃないですか?そのキーを設定したりするのはリレーションシップでも、クエリでも同じような感じで行うと思うのですが、その2つの違いはクエリはそれをテーブルとして表示できるのに対して、リレーションシップはただ定義するしかできずテーブルとして表示はできないのでしょうか? あと、クエリとかである条件で抽出したテーブルの1つのフィールドのSUMを出したいのですがどういった条件式を書けばいいのでしょうか? なにぶん、初心者ゆえに質問が分かりにくいと思いますが、どうかよろしくお願いします。

  • Accessリレーションシップ

    Accessにて、 テーブルA(個人情報) ●個人コード ●名前 ●住所  ・  ・ テーブルB(個人ごとの数量管理) ●個人コード ●数量 上記のようなテーブルがあるとします。 これは、1:1のリレーションシップにしたいのですが、 クエリAを作成して ●個人コード(テーブルB) ●名前(テーブルA) ●数量(テーブルB) 個人コードを入力すると、名前を参照するというふうに したいのですが、1:1のリレーションシップだと個人コードの入力時に 参照はできないのでしょうか? 一旦閉じて、開くと参照していますが・・・。 良いご意見がありましたら、よろしくお願いします。

  • ACCESSのリレーションシップであこる不具合について

    時たま、20人位の受講生を相手にAccessを教えているのですが、 20人に一人か二人くらいの割合で以下のことが起きます。 テーブルが片手で数えられるくらいの数しかないテーブルを リレーションシップで参照整合性のチェックボックスをつけておいて、 しばらく、クエリの話をしたあと改めてリレーションシップを 表示すると、 ・ものすごい数のリレーションシップが組まれている。 ・そのリレーションシップは何回デリートで削除して上書き保存し、 表示しなおしてもものすごい数のリレーションシップが 相変わらず表示される。 ・クエリで何らかの作業をしていても特に支障はない。 具体的なサンプルはあるので理由を教えていただける方 いらっしゃいましたらどうぞご連絡ください。 メールで送ります。  私がどんなにACCESSをいじくり倒しても、 絶対出てこないのですが、ときたまこういう現象を 出してくれる人がいるのでその度その度なやんでいます。 この現象が起きると、あきらめてMDBを削除してもらうか、 そのままあきらめて使用してもらっています。 どうしても原因が知りたいです。

  • アクセス2000のルックアップ設定後のリレーションシップ

    アクセス2000のルックアップを設定後のリレーションシップが自動で作成されることは理解しています。テーブル4つの内1つ(データの流れ的に最後に相当)に設定しました。リレーションシップ線が4つできてしまい、テーブル名がテーブル名に1、2、3と増えてしまいました。邪魔なのでリレーションシップから「テーブルを表示しない」を押し消しても作業してからリレーションシップを確認すると再度表示されてしまいます。また解除(テーブルをデザインモードにして、標準横のルックアップタブを押し、表示コントロールをテキストにする)をしてもリレーションシップの線が消えません。なにか操作方法がおかしいのでしょうか?機会の誤動作でしょうか?

  • リレーションシップがたくさんついているクエリ同士だと、不一致クエリを作

    リレーションシップがたくさんついているクエリ同士だと、不一致クエリを作成することはできないのでしょうか? 不一致クエリにしたい二つのクエリのみ別のフォームで作成し直して、不一致クエリを作成すると、抽出してくれたのですが、もともとのリレーションシップがついているクエリのままだと抽出が0になってしまいます。 フィールドやデザインは全く同じなのですが、やはりリレーションシップのせいでしょうか?

  • Access 複数テーブルのリレーションシップ

    Access2013  4種類の名簿をそれぞれのテーブル(4種類)で管理してありますが、 同じ方(氏名)が4種類の名簿全部には無く、2つや3つの名簿にばらばらにあります。  この4つのテーブルを同時に表示し入力できる分割フォームをつくりたいのですが、 この際の、4つテーブルの氏名をリレーションシップする結合プロパティの設定方法を教えて下さい。 あるいは、クエリのそれぞれのテーブルのフィールド(氏名)の抽出条件になんと書き入れたらよいか。教えて下さい。 宜しくお願いします

専門家に質問してみよう