ACCESS まとめ表示のクエリ作成について

このQ&Aのポイント
  • 商品の売上データと仕入データを一つのテーブルにまとめて表示するためのクエリ作成についての質問です。
  • 現在、ExcelデータをAccessに取り込み、売上データと仕入データを結合させるためのクエリを作成しています。
  • クエリの動作が非常に遅くなっているため、改善策を探しています。大中小分類の一致をINNER JOINで記述してみても遅いです。
回答を見る
  • ベストアンサー

ACCESS まとめて表示するクエリについて

商品の売上データ・仕入データが個別にあります。 商品には大中小の分類があり、各分類は2ケタのコードです。つまり、 (1) 大分類/中分類/小分類/仕入金額 01/02/05/1,000 という構成のデータと (2) 大分類/中分類/小分類/売上金額 01/02/05/1,250 という構成のデータとがあるわけです。この2つをExcelデータで持ってて、データが大量なのでAccessに取り込み、最終的には 大分類/中分類/小分類/仕入金額/売上金額 01/02/05/1,000/1,250 というように、仕入金額と売上金額を一纏めにして表示したいのです。 ここで、上記(1)を仕入テーブル、(2)を売上テーブルとし、 SELECT 大分類,中分類,小分類,仕入金額,売上金額 FROM 仕入,売上 WHERE 仕入.大分類=売上.大分類 AND 仕入.中分類=売上.中分類 AND 仕入.小分類=売上.小分類 とクエリを作ってみたら、各テーブルのデータが数千件になっただけで、物凄くクエリの動きが遅くなりました。 大中小分類の一致を、WHEREでなくINNER JOINで記述してみても、遅くなります。 最初のテーブル作成からして、間違ってるでしょうか?いい案はないでしょうか?

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

インデックスを作成してみては? テーブルのデザインビューで設定します。 大分類,中分類,小分類を一組で考えたときに重複が無いと思いますが 結合方法を拝見するに、大分類,中分類,小分類をそれぞれ別個のインデックスとし、 「重複あり」で作成してみてください。

absolute_space
質問者

お礼

まだ素人で、インデックスは良く分かってないんですが、使ってみます。便利そうですね。

関連するQ&A

  • アクセス2003 クエリについて

    いつもお世話になっています。 商品管理用にデータを作っています。 商品マスターテーブルでIDや商品名と共に、わかる範囲で定価と過去の仕入値を入力しています。 クエリで<商品マスター>を下記のようにまとめた<参考仕入価格クエリ>を作りました。 商品ID…商品マスターより 商品名…商品マスターより 参考仕入価格…CCur(IIf([過去の仕入値]>0,[過去の仕入値],[定価]*0.6)) さらに<参考仕入価格クエリ>と<仕入記録クエリ>を使って<仕入価格クエリ>を作ろうとしています。 <仕入記録クエリ>は、<商品マスターテーブル>と<仕入記録テーブル>を組み合わせ、仕入れのなかった商品はNz関数で仕入額が0円になるようにしています。 <仕入価格クエリ>のデザインビューで参考仕入価格をフィールドに入れてみたところ、<参考仕入価格クエリ>では×0.6で表示された定価が、0.6かけない状態で表示されてしまいました。 この場合×0.6の状態で反映させるにはどうしたらよいのでしょうか? よろしくお願いします。

  • アクセス2003 クエリの書式

    いつもお世話になっています。 商品テーブルや仕入テーブルなど数種類を作り、それを基にクエリをいくつか作りました。 テーブル[仕入記録]から各商品の直近仕入額を抽出したクエリ[直近仕入額クエリ]とテーブル[商品マスター]を組み合わせ、仕入れのない商品(仕入記録に入力がない商品)はNz関数で0になるようにしました。 そうしたところ商品名や金額はあっているのに、直近仕入額の書式が文字列のような表示になってしまいました。 もちろん[直近仕入額]やその他のテーブルで金額のフィールドは全て書式を通貨にしています。 Nz関数の使い方がおかしいのでしょうか? それとも他に原因があるんでしょうか? よろしくお願いします。

  • クエリで・・・

    Windows2000/Access2000 削除クエリで質問です。 中古車と中古仕入という2つのテーブルがあり、注番でリレーションが設定されてます。 中古車の中古車年・月・日が未入力で、中古仕入の仕入区分のコンボボックスの値が「孫取」以外を抽出削除するクエリを作ったのですが、「指定されたテーブルからは削除出来ませんでした」とメッセージが返ってきました。 以下のように設定してますので、どのように設定したら良いのかアドバイス頂けたらと思います。宜しくお願い致します。 strSQL = DELETE 中古車.*, 中古車.中古車売上年, 中古車.月2, 中古車.日2, 中古仕入.仕入区分 FROM 中古車 INNER JOIN 中古仕入 ON 中古車.中古車注番 = 中古仕入.中古車注番 WHERE (((中古車.中古車売上年) Is Not Null) AND ((中古車.月2) Is Not Null) AND ((中古車.日2) Is Not Null) AND ((中古仕入.仕入区分)<>"孫取")); DoCmd.RunSQL (strSQL)

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

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

  • Access クエリ、レポートによる集計について

    クエリで目的の集計結果を出すために制作中なのですが 私の作り方が悪いようでレポートを作成する段階でAccessが フリーズしてしまいます。 集計内容テーブル構成は以下のとおりです。 (マーケティング処理用のデータベース) 一つの企業がいくつもの店を持っています。 企業用のデータと店用のフィールド項目は同じですが一対多を保つためにテーブルを分けています。(企業側が一、店側が多。) このように一つの企業に対して店がいくつもある場合、多店舗と呼んでいます。 この多店舗を持つ企業データだけで1500社程度あります。 多店舗のデータは1万件ほどです。 一つの企業に対して一つの店しかない単独店のデータもあります。 企業用と店用を分ける必要が無いので単独店のデータは一つだけです。 今の段階では企業テーブルに多店舗の企業データ。 店テーブルに多店舗のデータと単独店のデータとなっております。 別テーブルに商品分類テーブルがあり、フィールドとしては構成比、分類IDとなっています。 この商品分類を横並びにするためにクロス集計クエリを使い横並びにしました。分類は15品目程度あります。 ついでに構成比と別テーブルにある売上を元にパーセントを金額に直しています。抽出条件に売上100000以上としています。 クエリ名:●販売高(すべて) http://upload.jpn.ph/img/u14091.txt 県ごと企業ごとの集計をしたいので、 フィールドは 都道府県、掲載拒否(0)、データレベル(10)、企業コードをグループ化。以下商品分類は合計と設定しています。  クエリ名:◆多店舗販売高(仮名) (データレベル、00が単独店 10が多店舗)  (掲載拒否、1の場合は拒否) ttp://upload.jpn.ph/img/u14092.txt 単独店は一店舗だけなので多店舗のような企業ごとの集計はする必要がありません。販売高クエリを使いデータレベル00、掲載拒否0、商品分類や企業コードを入れただけです。 これで完成ではなく、掲載拒否の合計データを入れる必要があります。 フィールドとしては、都道府県、店名、掲載拒否(1)、企業コードでグループ化、以下商品分類は合計。 これら3つの集計内容をユニオンクエリで一つにしています。 (多店舗販売高+企業名、単独店販売高、その他販売高)(県別集計) 多店舗販売高に関しては後から企業名を別クエリで足しています。 フィールド数、フィールド名を合わせる為に、その他販売高クエリの、店名及び企業コードはNULLで設定しています。 このユニオンクエリをレポートで設定し、グループレベルでトップを県、 二番目に掲載フィールドを設定。 集計は分類のすべてを合計で設定。 県でグループ化して、その他とそれ以外の合計を出したいので掲載フィールドをユニオンクエリを作成する前段階で追加しました。 (掲載1はその他、それ以外は0) 集計したい内容をエクセルで簡単に表すとこういう感じです。 ttp://upload.jpn.ph/img/u14090.jpg 社数やシェアなどの計算はクエリでさらに作成しなければならないのでしょうか?

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • Accessクエリで分類ごとの累計を計算する方法

    テーブルのデータをクエリに読み込んで、大分類ID-小分類IDの組合せを元にして、 月々の累計を計算したいのですが、算出式がどうしてもわかりません。 DSUMを使えばいいかなと思い、クエリのフィールドに、 累計:DSUM("金額","tbl_sample",    ) のような感じでやってみたのですが、条件式をどういれてよいかわかりません。 もし分かる方がいらっしゃればお知恵をお貸しください。よろしくお願いします。 イメージ的には以下のような感じで、★箇所のような累計結果を算出したいです。 ------------------------------------------------------------ 元のテーブルファイル名:tbl_sample 月 大分類ID 小分類ID 金額 ★累計 4___1___1___\100_\100 4___1___2___\200_\200 4___2___1___\300_\300 4___2___2___\400_\400 5___1___1___\150_\250 5___1___2___\250_\450 5___2___1___\350_\650 5___2___2___\450_\850 --------------------------------------------------------------

  • Accessのクエリで・・

    売上数量の集計+客先毎のランク付けをし、リストアップしたいのですが。うまくいきません。 *現在のテーブル内のデータは下記の様になっています。 (客先名を(株)●・●(有)この2件にてイメージしています。) 客先名|商品|商品|商品|商品|(単位:個) (株)●|100|189|200|132| (株)●|120|111|230|234| ●(有)|230|183|165|149| (株)●|162|231|261|119| ●(有)|132|156|197|220| この状態でクエリからどこのデータをどのようにして活用すれば、集計+ランク付け→リストアップができるのでしょうか?クエリからではないのでしょうか?詳しく教えて下さい。

  • Accessのテーブル結合方法

    Access2000で商品の仕入と売上の受払を一覧表にしようとしているのですがうまくいきません。 テーブルは商品仕入と、売上の2つがあって 仕入には荷受した日、商品コード、数量、仕入金額と値入金額、仕入先があります。 売上には売上した日、商品コード、レジ番号、利用者、数量、売上金額となっています。 この2つを1枚の表にして、商品コード別に在庫が動いた日、適用(売上ならレジ番号、利用者を表記して、仕入なら仕入先を明記)、仕入数量、仕入金額、値入金額、売上数量、売上金額となるようにしたいのですが、うまくいきません。 ユニオンクエリを使ったり、選択クエリで単純にならべたりしたのですが、私の知識ではどうにもならなくなりました。 よろしくご指導のほどお願いします。

  • Access2007 クエリの作成 フィールド選択

    Access2007を独学で勉強中です。とっても基本的なことだと思いますが教えてください。 テーブル「売上台帳」には「売上No.」「売上日」「商品CD」「数量」があります。 テーブル「商品台帳」には「商品CD」「商品名」「単価」があります。 この二つをクエリを使って1つの表として扱えるようにしたいのですが、テキストをみると「商品CD」はテーブル「売上台帳」から取るようになっています。なぜテーブル「商品台帳」の「商品CD」を使わないのでしょうか??? 因みに、どちらから「商品CD」をとっても、クエリのデータシートビューで確認すると同じ結果になりました。 なお、リレーションシップと参照整合性の設定は行っています。 クエリを作成する上で重要なことのように思えましたので、質問させていただきました。 よろしくお願いいたします。

専門家に質問してみよう