• ベストアンサー

Accessでのクエリ作成についてですが

【Tジャンル】【T商品】【T仕入先】 ↑これらの3つのテーブルを使ってクエリを作成すると仮定します。 それぞれのテーブルにあるフィールドの内容は以下の通りです。 【Tジャンル】 [ジャンルコード(主キー)][ジャンル名] 【T商品】 [商品コード(主キー)][商品名][ジャンルコード] [仕入先コード][仕入原価][標準価格][終息][備考] 【T仕入先】 [仕入先コード(主キー)][仕入先名][フリガナ][郵便番号] [住所][建物名][電話番号][FAX番号][担当者名][メールアドレス] ここで質問があります。 クエリ作成のデザイングリッドのフィールドに [仕入先コード]を追加するとします。 [仕入先コード]は【T商品】と【T仕入先】両方にあるのですが、 フィールド名が同じならば、どちらから追加しても構わないものなのでしょうか? それとも、何か決まり事のようなものがあるのでしょうか? 基礎的な部分の質問ですが、ご存知の方がおられましたら、 どうか宜しくお願いします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

クエリ結果を表示するだけならどちらから取ってきても同じですが そのクエリを介して入力を行う場合に差が出ます 簡単なテストをしてみると分かります 既存レコードの仕入先コードを編集する場合 T商品から取ってきた仕入先コードは編集可能ですが T仕入先から取ってきた方は編集できません

noname#48398
質問者

お礼

回答、ありがとうございました。 実は、あるアクセスのテキストの解答を見ていて 「何故、T商品のフィールドを使うのだろう?」と疑問に思ったので、 今回の質問をさせていただきました。 CHRONOS_0さんの回答を読んで、納得出来ました。 表示するぶんには問題がなく、編集する時に問題が出るのですね。 お陰様でスッキリしました。 本当にありがとうございました。

その他の回答 (3)

noname#140971
noname#140971
回答No.3

普通は、単一 Select 文で書ける方を採用すると思いますよ。 SELECT goods.ID, goods.gname, goods.supplier_ID, supplier.sname FROM supplier RIGHT JOIN goods ON supplier.ID=goods.supplier_ID; SELECT goods.ID, goods.gname, supplier.ID, supplier.sname FROM supplier RIGHT JOIN goods ON supplier.ID=goods.supplier_ID; そりゃー、確かに、両者のクエリの実行結果は同じです。 だが、前者のクエリは次のようにも書けます。 SELECT ID, gname, supplier_ID, Dlookup("sname","supplier","ID=" & supplier_ID) AS sname FROM goods; こういうことですから、わざわざ、主たるテーブルの列ではなく従たるテーブルの列を参照しないでしょう。

noname#48398
質問者

お礼

丁寧な回答、ありがとうございました。 恥ずかしながら、SELECT文については理解できていませんでした。 お陰様で、新たな課題がみつかったような気がします。 自分も勉強すれば、Husky2007さんのレベルに近付けるのか・・・ わたしの頭ではちょっと無理っぽいですが、自分なりに頑張ります。 本当にありがとうございました。

  • yatoaa
  • ベストアンサー率30% (110/362)
回答No.2

どちらからでもいっしよといえばいっしょですが 結合プロパティのところで(右クリックで表示) 1  a b どちらにもある場合のみに出力 2  a の全レコードを出力 3  b の全レコードを出力 のどれを選択するかで出力状況が変ります 1 のa b どちらにもある場合のみに出力 を選択している場合なら 結果は一緒です 2 もしくは 3 の場合なら結合相手が存在しない時には null(空白) で出力される場合がでてきます

noname#48398
質問者

お礼

丁寧な回答、ありがとうございました。 お陰様で勉強になりました。 今度、教えていただいたことを試し、 違いを比べてみたいと思います。 本当に、ありがとうございました。

  • ruru0707
  • ベストアンサー率68% (20/29)
回答No.1

【T商品】と【T仕入先】を[仕入先コード]でつないであれば どちらのテーブルから表示させてもクエリーの結果は同じですよ。

noname#48398
質問者

お礼

早速の回答、ありがとうございました。 表示させるだけなら結果は同じということですね。 未熟者故、今後も質問することがあるかと思いますが、 宜しくお願いします。 本当にありがとうございました。

関連するQ&A