AテーブルのレコードとBテーブルのフィールドをリレーションさせる方法はあるのでしょうか
やろうとしている事は、Bテーブルの各フィールドにはそれぞれの商品数量があって、そのフィールド(商品名)の単価をAテーブルから参照させたいのですが
主キーがAテーブルでは、商品名に出来そうですが、Bテーブルは、商品名が
フィールドとなっているので
配列のような概念が利用できないかとも思ってマニュアル探してみましたが判りませんでした。それともデータベースの考え方が間違っているのでしょうか?
ご存知の方いらっしゃいましたら宜しくお願いします。

A 回答 (1件)

レコードとフィールドのリレーション処理は、できないです。



えーと、も少しテーブルの構造やなさりたいことを、具体例をあげて書いていただくと、解決策が書きやすいんですが、
Aテーブル
 商品ID
 商品名
 単価
Bテーブル
 商品ID1
 商品数量1
 商品ID2
 商品数量2
   :
のようになっていて、単価×数量で、商品1,商品2…の売上金額を求めたい。ってことなんでしょうか?

もしそうであれば、根っこの部分の問題として、テーブルの構造に難があるとことになります。

Bテーブルを
 伝票ID
 商品ID
 数量
ってな構成にして、伝票一つに付き複数レコード生成するようにする、ってのが根本的な解決になると思います。

データベースの大規模な改造を伴わずに解決するとすれば、DLookup()関数を使えば良いでしょうね。
クエリ中に、
DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1])
と書けば、[商品ID1]フィールドの商品の単価を取得することが出来ます。
DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1]) * [商品数量1]
で、売上金額が計算できます。

テーブル構造を修正する方式に比して、DLookup()の方は速度的には大幅に劣ります。が、修正の手間はこっちの方が遥かに簡単です。取り扱うデータ量が少ない(せいぜい数万件程度)んであれば、後者の方法で十分だと思います。

なんかあったら、補足をお願いします。
    • good
    • 0
この回答へのお礼

ありがとうございました。accessは初心者なので大変勉強になりました。
ご理解頂いている通りの内容です。質問内容が具体的でなくて申し訳ございませんでした。ホームページからcgiでサーバーに蓄積されたcsv形式データをダウンロードしてaccessで整理しようと考えていました。

お礼日時:2001/06/15 05:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


このカテゴリの人気Q&Aランキング