• ベストアンサー

Accessのリレーションシップについて

家にあるAccessの本やヘルプを見たのですが、いまいちよくわからないので 教えてください。 リレーションシップの結合の種類なのですが、 内部結合、左外部結合、右外部結合の3つがよくわかりません。 どういった時に、設定しなければいけないのかがわかりません。  どうか、具体例など挙げて教えていただければうれしいです。

noname#9485
noname#9485

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

  • ベストアンサー
  • jaws
  • ベストアンサー率34% (30/87)
回答No.1

こんばんは テーブル1     テーブル2 山田   20    細川   男 金田   30    小泉   女 田中   40    青木   男 山本   50    田中   男 中村   60    富田   女 森    70    林    女 水野   80    山田   女 というテーブル2つありました ここで、上記のデータをキーとしますと (1)テーブル1とテーブル2の内部結合 これはテーブル1にも含まれテーブル2にも含まれるデータを抽出します。 したがって、上の例では山田と田中がキーで抽出できます。 山田 20 女 田中 40 男 (2)テーブル1とテーブル2の左外部結合 これは、テーブル1すべてのデータとテーブル2のうちテーブル1に存在しない データを表示します。 上の例では、 山田 20 女 金田 30  田中 40 男 山本 50  中村 60  森  70  水野 80  となり、性別が分かるのは山田と田中だけです。 (3)テーブル1とテーブル2の右外部結合 これは、テーブル2すべてのデータとテーブル1のうちテーブル2に存在しない データを表示します。 上の例では、 細川   男 小泉   女 青木   男 田中   男  40 富田   女 林    女 山田   女  20 となり、年齢が分かるのは田中と山田だけとなります。

noname#9485
質問者

お礼

わかりやすい説明ありがとうございます。 よくわかりました。 また勉強続けます。

関連するQ&A

  • Access(リレーションシップについて) 

     Win XP Office 2003 Accessを勉強中です。  デザインビューでクエリを作成するときに、関連するテーブルを表示させると自動的に「結合プロパティ」の線が表示されますが、 この表示で自動的に「1対多」を表示する時としない時がありますが、これは何故でしょうか。  これはどこかから設定をしてやるのでしょうか。  また、同じような線としてメニュバーから「リレーションシップ」を表示させることが出来ますが、 内容的には「結合プロパティ」と同じものですが、これは「リレーションシップ」とはどのようなに使い分けるものでしょうか。

  • Access リレーションシップ データ型について

    リレーションシップとクエリ内部結合の違いについて リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか? データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか? 任意の番号に指定しようすると、オートナンバー型のIDフィールドに連結されているため編集できません となります。

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

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

  • Access2000 リレーションについて

    現在初歩の初歩からAccessの勉強中です。 リレーションが何の為にあるのか、設定するのかはよく分かるのですが、内部結合・外部結合や1対多・1対1などがよく分かりません。 ここで全てを教えていただくわけには行かないと思いますが、本などをいくつか読んでもいまいちピンときません。 具体的にどういうケースでどのように設定するのかも分かりません。 どなたかご教授頂けませんでしょうか? 分かりやすい書籍・ホームページのご紹介でも結構です。 よろしくお願い致します。

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

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

  • MS ACCESSにおいてのリレーションシップ設定

    ACCESSを使用してシステムを構築しているのですが、テーブル間のリレーションシップについて疑問があります。 リレーションシップを設定することにより、データベースの整合性を得ることができますが、その他のメリットはあるのでしょうか? ある文献では検索時間の短縮になるとあったのですが、本当なのでしょうか? 通常の表結合クエリーと参照整合性以外の違いはどのようなものでしょうか? 回答をお願いします。

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Accessの結合線をクエリのデザインビューで削除した場合、リレーションシップにも影響がありますか?

    Accessでクエリを作成時にデザインビューでテーブル間の結合線を削除しました。 リレーションシップで定義した結合線も自動的に削除されてしまうのでしょうか? リレーションシップも自動的に削除されると他のクエリにも影響がでるので大変な事になると思い、危惧しています。 どなたか教えてください。

  • postgres 外部結合(AからB、BからC)

    postgresの外部結合で質問です。 テーブルを複数外部結合する場合、 A(左)B(右)、 A(左) C(右)と外部結合する場合のSQLはよく載っているのですが A(左)B(右)で外部結合、 そしてさらに B(左)C(右)の外部結合のSQL例がなかなか載っておらず、見つけれません。 どなたか教えてください。

  • ACCESSのリレーションシップについての疑問

    ACCESS初心者です。 ACCESS2002 OSはWindowsXP SP2です。 基本が分かっていないせいなのかもしれませんが、私には理解できない現象が起こっています。対応方法があれば教えていただくようお願いします。 ACCESSでデータ更新のフォームを作っています。 そのフォームは2・3日前に作ったもので、たとえばテーブルAを更新するためにマスターテーブルのBとCを参照しているような形になっています。このリレーションはクエリで指定してあります。 このフォームではクエリに対して更新する形になっています。 このフォームのデザインを編集しているときに「ツール」の「リレーションシップ」をクリックすると画面にはBとCだけが表示されます。 なぜメインのテーブルのAが表示されないのか?と思いながら、しょうがないので右クリックして「すべてのリレーションシップの表示」を押すと、驚いたことにDのテーブルが表示されました。 実はこのDというテーブルは以前に作ったAを作る前に使っていたAによく似たテーブルなのです。 当然、以前にはDとB・Cのリレーションも作っていましたが、今編集中のフォームではDは関係ありません。 リレーションシップの画面は不必要に広大なもので横に3スクロール分と縦にも5スクロール分くらいあって、その右下の端っこにD・B・Cのリレーションだけが表示されていて、それ以外はただただスペースがあるだけです。 なぜ肝心のA・B・Cのリレーションが表示されずD・B・Cのリレーションが表示されるのでしょう? 試しに今では不要であるDのテーブルを削除してみましたがリレーションシップではさすがにDは消えたもののB・Cが表示されるだけで、Aは出てきません。 そもそもACCESSにおけるリレーションシップというのは個々のフォーム内で定義されるものではないのですね?(根本的なことで申し訳ないのですが、買った2冊の本を見てもインターネットで探してもその辺の説明が見当たりませんでした) SQLであれば個々のSQL文で都度JOIN等の記述をすると思うのですが、ACCESSではデータベース全体の共通事項(?)としての定義になるのでしょうか? ACCESSは初心者で見当はずれな質問かもしれませんがどうかよろしくお願いします。

専門家に質問してみよう