- ベストアンサー
アクセスのクエリの作り方
初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
「ではどちらのテーブルの商品コードを使えばよいのか」 については結論はどちらでも結果は同じです。 ただ、コンピュータの内部処理で優劣があるかも しれません。ためしに、1万~10万件程度の スピードのテストをしてみてはかがでしょうか? おもしろいとおもいます。 たぶん、データ数の小さいテーブルのを使ったほうが 早い気がします・・・
その他の回答 (5)
- simauma
- ベストアンサー率25% (2/8)
売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 よく以下のような使い方をするとおもいます。 ●売り上げの記録を表示する時に必要になるのが、売り上げテーブルです。 ●商品テーブルはひとつひとつがユニーク(レコード各々固有)になる、データベースでマスターファイルと呼んでもいいと思います。共通のファイルとなり、各店舗から参照して使用します。商品のラインナップや在庫を表示するときには、これがメインとなるでしょう。 ●各店舗の売り上げを表示するときは商品マスタを参照していきます。オンラインでマスタが大型コンピュータにある場合は、支店はこれを参照して表示するでしょう。 ●この二つのテーブルはお互いを結びつけるのが商品コードでコンピュータはこれを検索して結合して結果をだします。なので、キー(KEY)とよばれるものを定義すると、検索が早くなることがあります。 ●キーは複数にもなります。 ●テーブルは二つだけではなく、3つ以上もつかえます。 まだ、いろいろありますが、売り上げで分析をしようと思えば、商品マスタにもっと多くの属性をふやして使います。たとえば、サイズ、色、形、デザインした人など・・これらの属性を検索すれば、今何がトレンドなのか分析可能です。 また、売り上げテーブル(トランザクションファイルなんて呼ぶこともあります)に売れた時間や買った人の性などの属性を追加しても分析可能です。セブンイレブンなどは、たしかそんなデータをレジで入力して売り上げをのばしたなんて聴いたことありました。 ほかのにも面白いクエリーがいっぱいあります。 SQL文も同じことができるので同時に勉強するといいとおもいます。
補足
すごく良くわかる説明ありがとうございます。 ただ、shmaumaさんのご意見ではどちらのテーブルの商品コードを使えばよいのか私には良くわかりませんでした・・・
- imogasi
- ベストアンサー率27% (4737/17070)
両テーブルで一致したものを問題にするときは、商品テーブル側です。 基準になる方のテーブルを採るべきです。 商品コードは商品テーブルに登録されて、始めて一人前の商品ですから。商品テーブルにない商品コードは、売り上げテーブル入力時ミスか、商品テーブルのメンテが送れているわけですから。 意味的に「どちらが主か」を迷うことはありません。 SQL(クエリのこと)以外、プログラムを組む場合などでは、マスタファイルとトランザクションファイルが明確に区別していて疑問も起きませんでしたが。 商品コードに関する、不一致分の抜き出し(不一致クエリウイザード)などでは、両者表示は必要ですが。 この場合も情報としては両商品コードを表示するにしても 、あくまで商品テーブルを主にして、それにない売上テーブルの商品コードに注目するわけですから。
- kachimi
- ベストアンサー率40% (12/30)
#1、#2の回答にあるとおりです。 強いて言うなら、売上テーブルから引っ張ったほうがいいと思います。 無いとは思いますが、商品テーブルのレコードが削除されていた場合を考えて・・・ コードを出力したい場合、売上テーブルから 削除されていることを明示したいなら商品テーブル? どっちにしても使途によるのかな? 私はたいてい売上テーブルから引っ張ります。
補足
みなさま、早速のご回答ありがとうございます。 ただ、結合するだけならどちらでもよいのですね? でも、もしその後でフォームやレポートは条件を色々つけたクエリを作るときに不都合が出てくる場合はあるのでしょうか・・・
- youchan1117
- ベストアンサー率66% (12/18)
商品コードに該当する商品名と単価を表示させたいわけですから、クエリは次のように作成してはいかがですか? NO ・・売上テーブル 売上日・・売上テーブル 商品コード・・売上テーブル 商品名・・商品テーブル 単価・・・商品テーブル 数量・・・売上テーブル 商品テーブルの商品コードのフィールド型と 売上テーブルの商品コード型が一致している 必要があります。また、商品テーブルの商品 コードは主キーにして下さいね。 お試し下さい。
- na_kirajp
- ベストアンサー率43% (33/76)
例の場合であれば&売上テーブルと商品テーブルを一致した物だけのクエリであれば、どちらの商品コードでも一緒です。(一致した物なので) 但し、商品テーブルに無い場合も表示させたい場合は、売上テーブルの商品コードを表示しないと元の商品コードが分からなくなります。またこの場合商品テーブルの商品コードを選択した場合は、商品テーブルに存在しなかった場合は空表示になるので、一致したとか不一致を判断する必要があれば両方表示等考慮が必要です。
お礼
ありがとうございます。 お返事が遅れて申し訳ありませんでした。 色々試してみます。 とても参考になりました。