• 締切済み

アクセス2002のクエリで・・・

急いでいまして、下記の点についてアドバイスいただけると幸いです。 テーブルが以下のようになっていまして 【得意先番号】【年度】【支払日】【請求額】 (行1)【111111111】 【H14】【 6/16 】【7,000】 (行2)【111111111】 【H14】【 7/16 】【4,000】 この得意先番号は一人に対し一義的に決まる番号で、行ごとに一回の請求額がテーブルに記録されています。 このテーブルから、いつの支払日にいくらかったのかという条件で得意先番号を抽出することは可能でしょうか? 具体的にいいますと、うまく説明できないのですが、請求額が何月何日にいくら足りないというのは把握できているのですが、それが誰なのかが把握できていない状況で、何月何日いくら、何月何日にいくらという感じで過去10回ぐらいの履歴で購入者を特定したいというのが今回書き込んだ目的です。 アドバイスいただけると幸いです。

みんなの回答

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.3

うわあ。10日以上間があいてしまった……。 メールで知らせてもらう設定にしてなかったんだぁ……。 ごめんなさい。 #1です。 #2さんの言われていることで十分な気もしましたが、閉店していなかったので蛇足ながら。 >行には一人につき一つの得意先NO.を表示し横方向に日付を並べていくかたち に表示させることも可能です。 クロス集計クエリというのを使います。 詳しくはイルカ君まで。

  • vantage
  • ベストアンサー率60% (310/514)
回答No.2

え~っと、割り込むみたいで失礼します。 >(1) 行に一回の購入額が記録されているので何行にもわたって同じ得意先NO.が表示されているのですが、 >(2) 行には一人につき一つの得意先NO.を表示し横方向に日付を並べていくかたちにテーブルを作成しなおすことは可能でしょうか? データベースでは (2) をしないほうが良いんです。 例えば、ほとんどの得意先様では3回の請求で、No.1さんは10回の請求だとすると、テーブルの構造は一番請求の多いNo.1さんに合わせなければいけませんよね。これはデータ領域の無駄ですし、想像してみれば分かりますが、すご~く見難い表になるとなると思いませんか? また、そうやって作ったテーブルで、No.1さんにもう1回請求があれば、またテーブル構造を変えなければならなくなります。 もの凄~くおおざっぱに言ってしまうと「条件によって件数が可変するデータは縦軸に取らないとダメ」なわけです。 ですので、テーブルとしては(1)で良いんですよ。 この「同じ物が縦にたくさん並んでい」て一見すると見にくそうな表を、意味のある形に抽出したり並べ替えたりする仕組みが「クエリー」なのです。 例えば <得意先番号><年度><支払日><請求額> 【111111111】 【H14】 【 6/16 】【7,000】 【111111111】 【H14】 【 7/16 】【4,000】 【111111112】 【H14】 【 6/16 】【7,000】 【111111112】 【H14】 【 7/16 】【4,000】 という表から、<得意先番号>が【111111111】の行を取り出すとか、 <請求額>が【4,000】の行を取り出すとか、 あるいは、<支払日>が【6/1】~【6/30】に該当する行を取り出すとかが可能です。 たぶんやられたいことは、<支払日>が【6/1】~【6/30】に該当し、かつ<請求額>が【4,000】の行を抜き出して、<得意先番号>順に並べて欲しい…、とか言うことでしょうか? こういったことは選択クエリーを使用すれば、ごく簡単にできます。 で、具体的にどうすればよいのかとなると、“図解なしに説明するのは…”なのでヘルプとかを見てみて下さい。イルカ君に「選択クエリーを作成したい!」とか聞いてみれば、説明図付きで作り方を教えてくれますよ。 なお、#1さんが言っているのは“<支払日>が【6/1】~【6/30】に該当し”とかの抽出条件をクエリーで設定するとき、<支払日>のデータ形式を[日付型]にしておくと非常に設定がしやすいということです。はっきり言って今のままのデータ型(テキスト型?)だと、きっとこの先苦労します。 ただ、私が思うに<年度>は別途残しておいた方が良いと思います。【1/1】~【3/31】のデータの判定には必要になるかもしれませんし、業務の実体として【4/1】でも前年度扱いすることもあり得るでしょうから…。(ただし、これも[テキスト型]ではなく[数値型]が便利だと思います。) では、頑張って下さい。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

効率よくクエリを使うためには、テーブルの設計(フィールドの定義)を変更した方がいいようです。 日付は日付型で1つのフィールドにした方がいいでしょう。その方が検索に幅を持たせて何月何日から何月何日までに誰それさんがいくら買ったか(合計額でも履歴でも)というクエリが組めます。やり方はクエリウィザードに聞けば教えてくれます。選択クエリというのを使います。 日にちと金額を指定してリストを出すということもできます。 図解なしに説明するのはこれ以上は無理ですな。

kokorono2003
質問者

補足

そうですよね図解なしでの説明は難しいと思います。もし可能であればテーブルの分割についてだけでもアドバイスいただけませんでしょうか? 行に一回の購入額が記録されているので何行にもわたって同じ得意先NO.が表示されているのですが、そのテーブルを行には一人につき一つの得意先NO.を表示し横方向に日付を並べていくかたちにテーブルを作成しなおすことは可能でしょうか?

関連するQ&A