- 締切済み
表と表の結合について
新人研修で、「表の結合の際に、結合する列がなぜその列なのか?」を説明する方法を悩んでおります。 <元表> 商品コード、商品名、購入数、顧客情報 <正規化> 商品テーブル:商品コード、商品名 売り上げテーブル:商品コード、購入数量、顧客I これを見たとき、私は 「商品コード」で 結合すれば、「どこ顧客が、何の商品」を購入されたかというのがわかるのですが、 [質問1] なぜ商品コードで、「結合する仕様になっているか」の説明を求められたとき うまく説明する方法が思いつきません・・・。 「売り上げ伝票から正規化されて作成されたから、正規化する前の情報を出せるように関連付けするために、主キーの商品コードを、各表2つに残しておく。」 と言う説明しか出来ないのです。 もっとわかりやすい説明がありましたらご教授のほうお願いします。 できれば、正規化と言う情報を使わずに、「商品コード」で結合する理由を説明したいのです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jjon-com
- ベストアンサー率61% (1599/2592)
- Siegrune
- ベストアンサー率35% (316/895)
- toshi_2000
- ベストアンサー率30% (306/1002)
関連するQ&A
- アクセスのクエリの作り方
初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Accessのテーブル結合方法
Access2000で商品の仕入と売上の受払を一覧表にしようとしているのですがうまくいきません。 テーブルは商品仕入と、売上の2つがあって 仕入には荷受した日、商品コード、数量、仕入金額と値入金額、仕入先があります。 売上には売上した日、商品コード、レジ番号、利用者、数量、売上金額となっています。 この2つを1枚の表にして、商品コード別に在庫が動いた日、適用(売上ならレジ番号、利用者を表記して、仕入なら仕入先を明記)、仕入数量、仕入金額、値入金額、売上数量、売上金額となるようにしたいのですが、うまくいきません。 ユニオンクエリを使ったり、選択クエリで単純にならべたりしたのですが、私の知識ではどうにもならなくなりました。 よろしくご指導のほどお願いします。
- ベストアンサー
- オフィス系ソフト
- Accessで、在庫表を作りたいのですが・・・
いつも大変お世話になっております。m(_ _)m また質問させてください。 Accessで、在庫表を作っています。 「入庫情報_テーブル」と「出庫情報_テーブル」があり、それぞれのテーブルは、製品名(型番)と数量の情報を持っています。 入庫情報の数量はプラスして、出庫情報の数量はマイナスして、差引きの在庫表を作りたいのですが・・・ 入庫情報に入っている製品名のすべてを表示して、出庫情報の数量をマイナスする・・・というのは、「結合のプロパティ」で、入庫情報の全レコードと・・・というオプションを選べば可能です。 またその逆も可能なわけですが、両方を全部表示したい時はどうすればいいのでしょうか? つまり、入庫情報に入力されている商品で出庫情報にのっていないものと、出庫情報に入力されている商品で入庫情報にのっていないものがあるわけです。 在庫表では、それぞれのテーブルに存在するすべての製品名を載せ、型番が合致した場合は、入庫数量-出庫数量で在庫を出したいのです。 出庫情報にあって、入庫情報にないものというのは、つまり、在庫数がマイナスになるということです。 両方を同時に満たすには、どのようにすればいいのでしょうか? 質問の説明文が不足していたら指摘してください。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- 行をまとめる計算式
エクセルで以下のような表があるとします。 顧客 商品名 販売数量 コスト 売単価 売上 ああ かかか 10 200 300 3000 ああ ききき 10 300 400 4000 いい かかか 10 200 300 3000 いい かかか 10 200 300 3000 いい ききき 10 300 400 4000 うう かかか 10 200 300 3000 うう ききき 10 300 400 4000 うう ききき 10 300 400 4000 うう ききき 10 300 400 4000 この表を以下のようにするにはどうしたらいいでしょうか? 顧客 商品名 販売数量 コスト 売単価 売上 ああ かかか 10 200 300 3000 ああ ききき 10 300 400 4000 いい かかか 20 200 600 6000 いい ききき 10 300 400 4000 うう かかか 10 200 300 3000 うう ききき 30 300 400 12000 つまり、顧客と商品名が同一の行は、販売数量と売上を合計して一行にまとめてしまいたいと考えています。 上記の表からは分からないようになっていますが、売単価は基本的に顧客ごとに違います。コストは同じ顧客の中でも違うことがあり、顧客と商品名が同一の行があった場合、その平均値を出したいと考えています。 一番目の表を元に別シートに二番目の表を作成したいと考えています。 二番目の表のそれぞれの列にどのような計算式を入れればいいでしょうか? ご教示お願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルで作成した「月間売上高表」から「顧客別売上高表」を作成する方法
「月間売上高表」のA列:顧客名、B列:代金、C列:商品名を入力しました。 この表から「顧客別 月間売上高表」を作成する方法を教えてください。
- 締切済み
- オフィス系ソフト
- Accessで複数テーブルのJoin
次のようなテーブル(T1~T4)とクエリ(Q1~Q2)があります。 クエリの表で囲っているものはAccessのQBEを表しています。 その下はAccessが自動生成したSQLです。 Accessがある場合はいいのですが、ない場合、いきなりSQLを 書かないといけないわけですが、どのような順番に並べていって いいのか整理がつきません。 4つ以上になるとさっぱりです。 何かヒントをいただけませんでしょうか? T1:売上表[売上No、日付、顧客CD] T2:顧客表[顧客CD、顧客名] T3:売上明細[ID、売上No、連番、商品CD、数量] T4:商品表[商品CD、商品名、単価] Q1: ┌────────────────┐ │日付 │ 商品名│単価 │数量 │ ├────────────────│ │売上表│商品表│商品表│売上明細│ └────────────────┘ SELECT 売上表.日付, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM 商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD; Q2: ┌────────────────────┐ │日付 │ 顧客名│商品名│単価 │数量 │ ├────────────────────│ │売上表│顧客表│商品表│商品表│売上明細│ └────────────────────┘ SELECT 売上表.日付, 顧客表.顧客名, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM (商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD) INNER JOIN 顧客表 ON 売上表.顧客CD = 顧客表.顧客CD;
- ベストアンサー
- その他(データベース)
- ACCESS 顧客データ 購入履歴検索について
ACCESSで顧客データを管理しています。 ●月●日以降 ○○製品の購入履歴があった人が、 その日付以降に再来店しているか、再来店日、購入製品をだしたいのですが、 良い抽出方法ありますか? テーブルには、↓ があります。 顧客コード 顧客名 売上日付 取引番号 商品コード 商品名 売上数量 店舗名 分かる方いらしたら教えて下さい! 宜しくお願いします。
- 締切済み
- Windows系OS
- アクセスのリレーションシップ
アクセス2007を使用しています。 顧客表 (顧客コード 顧客名) 注文表 (顧客コード 商品名 数) と言う表があります。 二つの表を 1.リレーションシップをはる 2.結合する(クエリ:売上表) 上記作業を行い売上表を作成しました。 売上表作成の流れは、 「当然顧客コードで2つの表が結合され、両方の表に存在する値の行が表示される」 と思っております。 今回の結合(等結合)表の作り方は以下の流れだと思っております。 1. 顧客表、注文表の直積を出す。 2. 顧客表・注文表の顧客コードで一致する行を抽出する。 ここで質問なのですが、 一度、リレーションシップを作成しないで、 顧客表と、注文表を結合しようとし、クエリの売上表を作成しようとしました。 すると、直積結果までしか出ませんでした。 (SQLウィザードを確認しましたが、FROM句までのSQLしかありませんでした。Where,Innnerなし) これはつまり、リレーションシップを張らなければ、等結合が行われないということで 間違いないでしょうか?(Where、Inner JOINでの条件が入らない)
- ベストアンサー
- その他MS Office製品
- 表の結合の仕方
お世話になります。 このたび今後の業務に必要な為、SQLを勉強することになりました。そこでこのような問題が出たのですがどうも理解できません。 【商品マスタ】 商品コード 商品名 単価 0001 ボール 100 0002 バット 200 0003 グローブ 300 【仕入先マスタ】 仕入先コード 仕入先 001 A 002 B 003 C 【トラン】 購入番号 商品コード 仕入先コード 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 0004 004 20 上記の商品、仕入先、トランのテーブルから以下のように出力をするものです。 商品コード、商品名、仕入先コード、仕入先名、数量、単価、金額 0001 ボール 001 A 5 100 500 0001 ボール 002 B 7 100 700 0001 ボール 003 C 3 100 300 0002 バット 001 A 7 200 1400 0002 バット 002 B 8 200 1600 0002 バット 003 C 6 200 1200 0003 グローブ 001 A 10 300 3000 0003 グローブ 003 C 9 300 2700 0004 (null) 004 (null) 20 (null) (null) ネットを見てもいまいちピンと来ず行き詰っています。ヒント等ありましたらよろしくお願い致します。
- 締切済み
- その他(データベース)
- クエリー列選択の基準
顧客表 (顧客コード 顧客名) 注文表 (顧客コード 商品名 数) の表から 売り上げクエリー(ビュー)を作成しようと考えています。 (注文表に、ON UPDATE CASCADE設定済み) 1.表示クエリーを作成する場合 {顧客表.顧客コード , 顧客名 , 商品名 , 数} or {注文表.顧客コード , 顧客名 , 商品名 , 数} どちらの列で作成しても問題ないと思います。 2.更新クエリを作成しようとする場合 (1).{顧客表.顧客コード , 顧客名 , 商品名 , 数} or (2).{注文表.顧客コード , 顧客名 , 商品名 , 数} ・表作成後、顧客コードを更新すると考えた場合 (1)の場合は、顧客コードのマスター列を更新するため、子表:注文表の列も更新されるためエラーは起きないと考えています。 (2)の場合は、注文表の顧客コードの更新になるため、更新エラーになると考えています。 質問:検索クエリー(ビュー)を作成する場合は、特に列の選択は気にしなくてもいいと思っているのですが、 更新クエリーを作成する場合は、(1)(2)のようなケースがあると思っています。 更新クエリーの列の選択は、更新エラー等まで考えて列選択をしたほうがいいのでしょうか。 (親表の列を、使用するという考えでは雑でしょうか。)
- ベストアンサー
- その他(データベース)
お礼
正規化の指摘ありがとうございます。 > なぜ商品コードで「結合する仕様になっているか」 という質問が出てくるということは,購入数という項目が「何に対する」購入数なのかを理解していないということだと思います。 少し考えて見ます。ありがとうございました。