• ベストアンサー

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

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

  • tokin
  • お礼率67% (38/56)

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

  • ベストアンサー
noname#1296
noname#1296
回答No.2

テーブルのリレーションとクエリーのデザインはあくまで別物です。 テーブルでリレーションを設定すれば、矛盾を許さない設定になります。 例えば、得意先テーブルのレコードを削除した場合、取引履歴テーブルにその得意先IDを持つレコードがあれば削除できない(または自動的に削除される)設定や、得意先IDを変更しようとした場合、取引履歴テーブルに同じ得意先IDがあれば変更できない(または自動的に変更される)設定などを行います。これにより双方のテーブルで矛盾が発生しなくなります。 クエリーに関してはこの場合だと、取引履歴に得意先名を表示させたりとかいう使い方ですよね?一致するレコードを表示させるっていう使い方になります。

tokin
質問者

お礼

早速の回答ありがとうございます。 なるほど、クエリとリレーションシップでは、設定の内容が違うのですね。 私はいつもリレーションも、クエリも両方設定(ダブって)していましたが、用途によってクエリかリレーション、どちらかを設定すればよかったのですか。 勉強になります、ありがとうございました。

その他の回答 (1)

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.1

クエリーのデザイン画面を使用して設定すると、新しいクエリーを作る たびに設定をしないといけないです。 リレーションシップで一度設定しておけば、クエリーでいくつかテーブルを 追加するだけで勝手に設定まで終わっているはずです。 クエリーの画面で何度も設定をしなくても良いようにリレーションシップ があると考えれば良いと思います。

tokin
質問者

お礼

さっそくの回答ありがとうございます。 なるほど、クエリはテーブルが変更があるたびに都度の設定が必要で、リレーションシップは一度の設定で変更があっても覚えていてくれる。 ということですね。 勉強になります、ありがとうございました。

関連するQ&A

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

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

  • Accessの「or」的クエリの作り方

    Accessの質問です。 1つのテーブルは売上のデータが入っていて もう1つのテーブルは売掛のデータが入っています。 その2つのテーブルから売掛と売上のデータをもつクエリを作りたいです。 得意先ごとにユニークなIDを振ってあり、両テーブルにそれぞれ同じIDが存在するのでID をリレーションシップでつないでクエリを表示して、完成!・・・というハズだったんですが。 「売掛がある得意先」かつ「売上がある得意先」しかクエリで表示されません。 売上だけある得意先は、売掛を0にして表示、売掛だけある得意先は売上を0にして表示・・・といういわゆる「and」ではなく「or」的なクエリを作りたいのですが、どうすればいいのでしょう。 売上のない得意先は売上のテーブルにはIDそのものが存在していません。 お返事いただけたら助かります。

  • Accessの内部結合

    こんにちは。 Accessでcateテーブルとgoodsテーブルがあります。 select * from goods inner join cate on goods.cateid = cate.id; クエリデザインで、テーブルとテーブルを結合して上記のようなSQLができました。 これは動作することを確認しました。 SQLビューで下記のようなSQLを書きました。 select * from goods inner join cate on left(goods.cateid,5) = cate.id; しかしながら、動きませんでした。 VBAを使わずに、Accessの標準のクエリデザインから上記のようなSQLを実行させることは可能でしょうか? クエリデザインでselect left(cateid,5) as cateid from goodsというTESTクエリをつくり、TESTクエリとcateテーブルとジョインさせれば解決しそうなことはわかるのですが・・・ 宜しくお願いします。

  • ACCESSで複数テーブルのクエリ抽出

    ACCESSで複数テーブルのクエリ抽出 初めて投稿させてもらいます。 テーブル1・・・社員ID(主キー)、氏名 テーブル2・・・社員ID(重複キー有)、顧客ID テーブル3・・・社員ID(重複キー有)、得意先ID テーブル4・・・顧客ID、顧客氏名 テーブル5・・・得意先ID、得意先 上記のテーブル内容を1つのクエリで全部抽出するとき、 テーブル1の社員ID[a]とテーブル2の社員ID[a] と テーブル1の社員ID[a]とテーブル3の社員ID[a] を分けて抽出する方法ってありますか? クエリの結合プロパティで テーブル2の全レコードとテーブル1の同じ結合フィールドと テーブル3の全レコードとテーブル1の同じ結合フィールドにすると 「あいまいな外部接続が含まれているのでSQLを実行出来ません」とエラーになり、 テーブル1の全レコードとテーブル2の同じ結合フィールドと テーブル1の全レコードとテーブル3の同じ結合フィールドにすると 社員ID[a]、顧客ID[1]、得意先ID[α]、顧客氏名[吉田]、得意先[○○商事] 社員ID[a]、顧客ID[1]、得意先ID[β]、顧客氏名[吉田]、得意先[△△金融] みたいになってしまうのです。 やりたい結果は 社員ID[a]、顧客ID[1]、得意先ID["空欄"]、顧客氏名[吉田]、得意先["空欄"] 社員ID[a]、顧客ID["空欄"]、得意先ID[β]、顧客氏名["空欄"]、得意先[△△金融] 説明下手ですいませんが、ご教授の程よろしくお願いします。

  • アクセス:クエリの結合とリレーションシップの違いについて

    アクセス初心者です。 ◆ある請求システムをクエリ上の結合と関数だけでほぼ完成できました。誤作動もなく、正確な結果がでます。いわゆるリレーションシップをしないでの構築です。 ◆構成は、請求対象者の個人IDをキーにして、請求対象日付、基本料、食事料、立替金、その他請求という比較的シンプルななものを結合させて作成しています。クエリ上で関数で日付のところで何月分の請求かを抽出するようなしくみです。 ◆しかるに、完成させてしまってから「リレーションシップ」はしたほうがいいという内容のものをいくつかの資料でたまたま目にするようになりました。 ◆しかるにクエリーでできてしまったシステムで現時点で不具合は全く発生せず、リレーションの必要性が理解できません。 ◆というより、リレーションシップそのものを知らない段階でクエリの結合に取り組んだ者ですから、リレーションシップとは何ぞや?というレベルです。 ◆そこで、今回、クエリの結合とリレーションシップの違いについてアドバイスをいただけないでしょうか? よろしくお願いします。

  • Accessでクエリを作った際の順番

    Access2003の質問です。 以下のテーブルがあってそれらの項目を抜き出してクエリを作っています。 テーブル1 ・商品CD ・商品名 ・単価 テーブル2 ・No ・売上日 ・得意先CD ・商品CD ・数量 テーブル3 ・得意先CD ・得意先名 ・フリガナ ・郵便番号 ・住所 ・TEL ・担当者CD ・DM テーブル4 ・担当者CD ・担当者名 クエリ ・No(テーブル2) ・売上日(テーブル2) ・得意先CD(テーブル2) ・得意先名(テーブル3) ・担当者CD(テーブル3) ・担当者名(テーブル4) ・商品CD(テーブル2) ・商品名(テーブル1) ・単価(テーブル1) ・数量(テーブル2) クエリを作って、データシートビューに切り替えるとなぜか得意先CDで昇順に並んでいます。 もちろんNoで並べ替えを設定すれば、Noで並べ替わるのですが、なぜ得意先CDで昇順に並ぶのでしょうか? Noが一番左にあるので、Noで並べ替わりそうなものですが・・ 何も並べ替えを設定しないとどのような基準で並ぶのでしょうか? わかる方がいれば教えてください。

  • Accessのクエリ作成について

    クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?

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

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

  • Accessのクエリ作成について

    クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?

  • Access2016 クエリの結合ができない

    クエリデザインから2つのテーブルを表示して、結合したい項目をドラッグアンドドロップして結合する事ができません。 気づいた点は、結合したい項目を選択してドラッグした瞬間にポインタが「丸の中にスラッシュ」のポインタに変わります。 解決方法を教示頂きたいと思い、投稿させて頂きました。 宜しくお願いします。