• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マイクロソフトのアクセスでいくつかのデータと組み合わせて、)

マイクロソフトのアクセスでデータを組み合わせて集計可能か

このQ&Aのポイント
  • マイクロソフトのアクセスを使用して、データを組み合わせて集計することは可能ですか?
  • アクセス初心者で、データベースを作成したいと考えています。
  • 全ての来店者のデータをリスト化する方法はありますか?

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

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

Bさん 3回 Bさん 1回 を Bさん 4回 とさせるのがクエリでは簡単ですが、 こういう重複している人を(重複クエリかで)先に確定しておくのも手です。 Bさん 3回 2009年 Bさん 1回 2010年 とか違いのわかる項目があれば。 なければ、 Bさん 1 3回 Bさん 2 1回 と、とりあえず区別できる項目を追加し 別ものとして処理。(重複しないものはすべて1) 回答のため、現在の状況の提示をお願いします。

temitard
質問者

お礼

こちら、テーブルに回数と名前以外の情報がないので区別できませんでした・・・涙 今回は重複があるデータを削除し、正確なものとはなりませんでしたが なんとかデータベースとして形になりました! 本当にどうもありがとうございます!! とてもたすかりました。

その他の回答 (7)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.8

テーブル構成が何となく変な気がしますが、 そのままクエリにすると以下のような感じです。 SELECT A.名前, IIf(B.名前 Is Null,"×","○") AS A購入, IIf(C.名前 Is Null,"×","○") AS B購入, D.回数 FROM ((3月の来店者 AS A LEFT JOIN 3月のA購入者 AS B ON A.名前=B.名前) LEFT JOIN 3月のB購入者 AS C ON A.名前=C.名前) LEFT JOIN 来店者の来店回数 AS D ON A.名前=D.名前 私が訪ねたいのは関連テーブルの名前と、レイアウトです。

temitard
質問者

お礼

こちら、17個のテーブルをつなげて フィールドにiif関数を書いて成功いたしました!!! 本当にこまっていたのでたすかりました!! ありがとうございます!!

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.6

テーブル1 顧客ID 来店日 来店時間・・・ テーブル2 顧客ID 商品1購入フラグ・・・ ・・・ テーブル17 顧客ID 来店回数・・・ というデータが既にあるということであれば、 No1の回答の通り、簡単なクエリ一個でほぼ達成することができます。 が、 データ件数と使用DBの問題 データ構造の問題 (質問からは読み取れませんが、場合によってはインデックスの問題) など根本的な問題がいくつかあると思います。 このようなデータ件数ですと、そちらを解決するほうが優先順位が高いような気がします。

temitard
質問者

補足

データ件数とDBの重さの問題で何度か躓きましたが ようやくほしかったデータベースとなりました!! どうもありがとうございます!!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

【来店回数×名前】 の意味するところがよく分かっていませんが、 画像でいうと Dさんは1回の来店でA、B、C、D共に購入(購入者の4テーブルに各1レコードずつある)ということでしょうか。 縦軸は来店者 横軸はA購入者、B購入者、・・・・・P購入者、Q購入者、来店回数 と思うのですが、 1つずつ順番に消化すれば、 来店者の来店回数テーブルとA購入者との選択クエリの結果を出すと「来店者、A購入者、来店回数」 その結果に対して、B購入者との選択クエリの結果を出すと「来店者、A購入者、B購入者、来店回数」 ・・・・・、その繰り返しと思いますが効率は悪いです。 購入者テーブル17つを1つのテーブルにまとめておくと、 クロス集計クエリが来店者別購入別の集計をやってくれます。 Aさん A Cさん A Dさん A Cさん B Dさん B ・・・ Dさん Q があれば Aさん A Cさん A B Dさん A B Q にできます。(1次元を2次元へ、判定入れれば「件数」でも「○」でも「A」でも可。) たぶんこれのが良いかと。 警告についてはまだよくわかりません。

temitard
質問者

補足

ご回答本当にありがとうございます。 >Dさんは1回の来店でA、B、C、D共に購入(購入者の4テーブルに各1レコード >ずつある)ということでしょうか。 こちらですが、その通りになります。 2個目に提示していただいたやり方で挑戦してみようとおもいます。 そして、また一つ問題があり、 登録者名+来店回数のデータに重複があります。 登録者名を一回退会し、その後同じ名前で再登録した場合、 登録者名に重複がのこり、来店回数にも違うデータが入ってしまいます。 たとえば Aさん 1回 Bさん 3回 Bさん 1回 Cさん 5回 Dさん 1回 こちらですが、Bさんの登録回数をどちらか一つ(上だけなど)にして 集計することは可能でしょうか? 警告については、DBの容量が多数のクエリが入っていたため 重すぎたようでした。 新しいDBでテキスト形式に無事変換することもできました。 みなさん、本当にたすかります涙…; ありがとうございます。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

補足) 本題は別なので・・・簡単に。 これからやっていく上で、毎度180万件を処理するのは大変です。 途中までのデータを保持しておける方が便利なときもあります。 例えば、 全体処理が3時間かかってしまうところを、 3つに区切ることで2時間+30分+30分となる場合、 17:00から開始して20:00まで待つか、 17:00から開始して19:00までやっておいて、続きは別タイミング。 とか 3つめの処理でやり方が変わったとき3つ目だけやり直せばよいが、 一気にとなると3時間また最初から、となり何かと不都合が起きやすいです。 これだけのオーダーなので、PCがフリーズしないとは限りませんし。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

できますよ。 例えば、○×ならクエリのフィールドにIIfを使ったり すれば実現できます。テーブル構成が分からないので、 具体的なSQLは提示できません。 おそらく、サブクエリを組み合わせることで、一つの クエリで実現できると思います。

temitard
質問者

補足

ありがとうございます。 理想はこちらのJPEG画像のような形にしたいです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1241073777 テーブル構成としては (1)3月の来店者 (2)~(16)商品購入ありなし+来店者 (17)過去分すべての来店者+来店回数 になっています。 お忙しい中ご返答本当にありがとうございます!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

更新のケースがなく統計をとるケースのようなので、 選択クエリやクロス集計クエリを使うことになります。 抽出レコード件数が回数を意味することになると思います。 どのテーブルにも共通の項目(ここでは「来店者名」)があればリンクしやすいです。 オーダーが多いので、テーブル作成クエリにも挑戦しておくと良いです。 1)180万件→選択クエリ→テーブル作成クエリ→120万件まで絞り込み、 2)120万件→選択クエリ→テーブル作成クエリ→90万件まで絞り込み、 ・・・と対象を絞り込みながら処理することがデータ保持できて良いです。 1回目がバッチリなら、2回目からは2)以降の処理だけで確認可。 来店日、性別、年齢層、等情報もあれば、 推移グラフとかもっと統計をとることもできます。 エクセルでなくても十分です。 がんばってみましょう。 具体的に分からない機能が出てきたら、新たに質問お願いします。

temitard
質問者

補足

ありがとうございます。 来店者名は、どのデータにも入っていて 最終的には17つのデータが合わさったデータベースにしたいと思っています。 追加で質問させていただきたいのですが 【来店回数×名前】のデータが過去分すべてが入っていて1000万行あります。 こちらを、3月の来店者リストと掛け合わせてまずは270万行にしたいと思い 選択クエリでドラッグしデータ抽出しようとしました。 すると、【来店回数×名前】のデータがOLE オブジェクト型になっているらしく 掛け合わすことができませんでした。 そのため、データ型をテキストに戻そうと思い編集したのですが 【フィールドサイズ"プロパティの設定が小さな値に変更されました。データが失われたことにより、入力規則に違反する可能性があります。】と警告が出てしまいます。フィールドサイズを255まで上げてみたのですがだめで、結局【因数が無効です】というエラーで編集できませんでした。 だいぶ初期的なことを聞いてしまってすいません。 また、 オーダーが多いので、テーブル作成クエリにも挑戦しておくと良いです。 1)180万件→選択クエリ→テーブル作成クエリ→120万件まで絞り込み、 2)120万件→選択クエリ→テーブル作成クエリ→90万件まで絞り込み、 ・・・と対象を絞り込みながら処理することがデータ保持できて良いです。 1回目がバッチリなら、2回目からは2)以降の処理だけで確認可。 こちらは、データをいくつかに区切って集計したほうがよいとうことでしょうか? 大変お忙しい中お手数ですが宜しくお願いいたします。

noname#192382
noname#192382
回答No.1

リレーションの機能を使うことで、(1)(4)(5)(6)の4つのテーブルからクエリーにより最後のテーブルを作ることが出来ます。

関連するQ&A