アクセス2010の最新データ抽出方法とは?

このQ&Aのポイント
  • アクセス2010で最新のデータを抽出する方法について詳しく説明します。
  • 2つのテーブルからクエリを使って最新データを抽出する方法や、特定のワードを除外する方法についても解説します。
  • 初心者でも理解しやすいように、具体的な例を使って手順を紹介します。
回答を見る
  • ベストアンサー

アクセス2010 最新データを抽出する方法

はじめまして。 アクセスを猛勉強中の初心者です。 過去記事を探しましたが、解決できませんでしたのでご教示お願いします。 やりたいことは、2つのテーブルからクエリを使って、最新のデータを抽出したいです。 ですが、その中に抽出したくないワードが存在します。 それ以外のワードで最新のデータを抽出したいです。 まず、下記のような2つのテーブルがあります。 ●テーブル1        ・ID(主キー)       ・日付 ・コメント ・顧客ID ●テーブル2 ・顧客ID(主キー) ・顧客名 ・住所 次にこのテーブルをクエリにしてデータを返すと、下記のようになります。 日付    コメント      顧客名    ・2/1     保留       Aさん ・2/1     発送       Bさん       ・2/1     相談       Cさん ・2/2    次回未定     Bさん ・2/3     発送       Aさん  ・2/4    次回未定     Dさん        今回抽出したいデータは、「発送」というワードをはぶいた最新のデータをとりたいということです。 なので、データとしては、 日付    コメント      顧客名    ・2/1     保留       Aさん ・2/1     相談       Cさん ・2/2    次回未定     Bさん ・2/4    次回未定     Dさん と、このように抽出したいのです。 最新データの抽出にはMax関数を使ってでき、いらないワードである「発送」はクエリのフィールドの抽出条件に『<>”発送”』と入力することで抽出を防ぐことができたのですが、これらの方法でMax関数を入れて最新データの抽出をしようとすると、全ての「発送」を除いたデータが抽出されるので、最新データに該当する顧客のデータが消えてしまいます。 なので、本来のコメントデータが分からない状態になります。 また、エクセル側でパラメータクエリを使って資料を作成し、アクセスに触ったことがない人たちが使用するので、アクセスを更新してといったことができません。 なので、更新クエリなどを使ってのやり方以外の方法はないでしょうか? 全くの初心者ですので、言葉足らずで説明が分かり辛くて申し訳ありません。 ご教示をお願いいたします。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

> 「発送」というワードをはぶいた最新のデータをとりたい > 全ての「発送」を除いたデータが抽出される 日本語的には、その処理で合ってるように思いますが? とりあえず、すっごく簡単に考えてみませんか? 選択クエリをソースにして、選択クエリを作れるのはご存知ですよね? なので、「発送以外」を抽出する選択クエリを作りましょ。 で、コレを基に「最新日」を抽出する選択クエリを作りましょ。 もちろん一発でもいけますが、初めの内は上記で十分ですよ。 難しいことは慣れてからで十分です。

1153mmm
質問者

お礼

ご返答ありがとうございます。 言葉足らずでした。 「発送」というワードをはぶきたいのですが、それは最新の「発送」というワードだけはぶきたいのです。 Max関数と『<>"発送"』と抽出条件にいれてデータ化すると、データ上では別のコメント(発送ではないコメント)をいれたとしても、過去に「発送」がついた顧客の名前が消えてしまうので、できないのです。。 こんな説明でわかりますか…? あと、すみません、初心者なもので選択クエリをソースにして、選択クエリを作るやり方がわかりません。 申し訳ありませんが、教えていただけますでしょうか?

その他の回答 (7)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.8

#3さんののお礼に書かれているものが、もう少し・・・・と思います。 テーブル1の名を「★」、テーブル2の名を「■」と仮定します。 SQLビューに以下を記述してどうなりますか。 SELECT Q1.日付, Q1.コメント, Q2.顧客名 FROM ★ AS Q1 INNER JOIN ■ AS Q2 ON Q1.顧客ID=Q2.顧客ID WHERE Q1.日付 = (SELECT Max(日付) FROM ★ WHERE コメント<>'発送' AND 顧客ID=Q1.顧客ID); やっている事は、★ と ■ を 顧客ID で結び付け、日付が その 顧客ID の コメントが "発送" ではない日付の最大なら・・・・ Max を使うところの条件に コメント<>'発送' を指定すれば良さそう・・・・ 解釈が間違ってましたらごめんなさい。 ※ 処理性能はわかりません。

1153mmm
質問者

お礼

>SELECT Q1.日付, Q1.コメント, Q2.顧客名 FROM ★ AS Q1 INNER JOIN ■ AS Q2 ON Q1.顧客ID=Q2.顧客ID WHERE Q1.日付 = (SELECT Max(日付) FROM ★ WHERE コメント<>'発送' AND 顧客ID=Q1.顧客ID); こちらのSQLは以前にやってみたのですが、ダメでした。。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.7

何度も回答しますが。他の回答者様が言うように 1. やりたいことがはっきりしない 2.ACCESSの用語が理解できていない ことが問題ですねー。 少なくともクエリの使い方を理解しないと説明も難しい。 で やりたいことの説明を理解しようとしているのですが、 ACCESSの問題は別として、 例えば 2/1 A 保留 2/3 A 発送 で保留を抽出したいみたいだけど、元々設計がおかしくないですか? 保留後発送されたのか、新規が発送されたのか全く区別ができないですよね? そんなもの抽出してどうするのか、わからない。 相談も保留と同じだから、設計を考えなおしたらよいと思う。 いずれにしても クエリーの元データをテーブルにしていますよね。それと同じように元データのテーブルはクエリでも同じだから他の回答者様の クエリからクエリを呼ぶことでなんとなくできるとは思う。 私の勝手な解釈  Aさん 1/1 注文       1/20 相談       1/23 保留       2/3  発送 とすれば 2/3発送時点で その前のすべてが消え去ることになるようにしなければならないのでは? すなわち 発送を除外するのではなく、 1/1からの履歴をすべて紐つけにしてそのシリーズで管理することが必要なのでは? と思うのですが。 それとも、何らかの問題があったケースを抽出したいのかな?

1153mmm
質問者

お礼

masatsanさん、tsubuyukiさんの回答をもとにクエリを作り直しました。 そうしましたら出来上がりました! 勉強になりました。 ありがとうございます。 御面倒をおかけしましてすみませんでした。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.6

すいませんが、伝え忘れてました。 悪いことは言いませんから、参考書を一冊買いましょう。 で、読破しましょう。 攻略サイトでピンポイントでコピーペーストしても力にはなりません。 それを理解して、正しく応用するには基本を理解しないといけないのですから。 「発送を除く、しかし、全ての発送を除くと困る」 この言葉の真意がわかり、まだクローズされていないようなら、また参上するかもしれません。

1153mmm
質問者

お礼

お返事遅くなりすみませんでした。 何冊か持っていますので、またこれを機に勉強しなおします。 ご教示ありがとうございます!

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.5

”そのクエリのデザインビューで、フィールドにある"抽出条件"の項目に、「最新日」を抽出するところに (SELECT Max(A.コメント日) FR。。。。” ってどういうこと? 初心者の方が select...を使えるわけないと思うけど。どこからSelect...を持ってきたんですか? ま。予想はつくかないでもないけど。それはだめだよ。 でデザインビューで開いた画面が 選択クエリー ですよ きっと。 で他の方が回答されているように。(参考にしてくださいね。) デザインビューで開いて検索条件を入れて、そのクエリーを保存する。 SQLソースをコピーするのではなく。 さらにもう一つのクエリーを開いて(デザインビュー)、他の回答者様のようにする。 もちろんもっと簡単にできるけど、現状はちょっと無理だろう。と思う。

1153mmm
質問者

お礼

なんとなく理解はしているものの、実際にやってみても全く解決しない状態です… 初心者が頑張って解決しようとしたのが間違いだったのでしょうか… select...は沢山調べてみてこれしか出てこなかったので、 これしか解決ができないと思ったので、使ってみました。 何か他によい解決方法があれば、ご教示下さい! お忙しいところ、大変ご面倒をお掛けいたしますが、 よろしくお願いいたします。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

> 初心者なもので選択クエリをソースにして、選択クエリを作るやり方がわかりません。 そのくらいはご自身で調べましょうよ。と言いたいのをグっと堪えて。 ひとまず、「発送以外」のデータを抽出するクエリを、 選択クエリウィザードに従って作りましょう。 デザインビューまで進んで、 条件に「<>"発送"」で「発送以外」のデータを抽出できますね。 で、「Q_発送以外」と名前をつけて保存しておきましょう。 続いて、選択クエリのウィザードに従って、 最初の「テーブル/クエリ」をさっき作った「Q_発送以外」にしてやりましょう。 で、デザインビューまで進んで、条件でMax関数で最新日を抽出してやるとどうでしょう? と、言うか、 > 「発送」というワードをはぶきたいのですが、 > それは最新の「発送」というワードだけはぶきたいのです。 なかなか難解な日本語ですが、それはつまり 「各顧客の最新データが"発送"だったら、それは抽出対象」という事ですか? いや、でもそれだと、 > ・2/1     保留       Aさん は抽出されてこないですよねぇ? 最新が「発送以外」なら、そのコメントが優先されますよねぇ? つまり > ・2/2    次回未定     Bさん これですよねぇ? そう考えると「発送」が活きてくるケースなんて無いように思えませんか? 具体的に「どんなケースで"発送"を活かすのか」明示できませんか? じゃないと、お互いに(他に回答をくださる方も含め)手詰まりですよ。 少なくとも私は、上記の先入観で一杯ですから。

1153mmm
質問者

お礼

>「各顧客の最新データが"発送"だったら、それは抽出対象」という事ですか? 日本語がおかしくて申し訳ありません。 「発送」というコメント以外の最新データが抽出対象と言うことになります。 なので、「発送」というワードを除いた、それぞれの顧客の最新コメントを抽出したいです Aさんだけの例を追加すると 1/10  相談 1/30 TELあり 2/1   保留 2/3   発送 だとすると。最新のデータは2/3なのですが、 「発送」する前の対応状況を抽出したいので、 2/1 保留 のデータが出したいのです。 tsubuyukiさんからご教示頂いたようにすると 「発送」以外のデータを抽出するクエリ「Q_発送以外」を作成(<>"発送") その「Q_発送以外」を使ってもう一つクエリを作って、 >条件でMax関数で最新日を抽出してやるとどうでしょう? というやり方は理解できました。 ですが、各顧客での最新データを取る為に、 「顧客テーブル」と「Q_発送以外」を繋ぐということですよね? 調べて試してみたMax関数はテーブルにしか反応してくれないようです… 関数がおかしいのでしょうか?調べてみたものを当て込んだだけなので、 反応しないということなのでしょうか?

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.3

よわったね。 "最新データの抽出にはMax関数を使ってでき、いらないワードである「発送」はクエリのフィールドの抽出条件に『<>”発送”』と入。。。" って具体的にどういう操作をしました? どういう画面ですか(この操作をしている)?

1153mmm
質問者

お礼

ご返答ありがとうございます。 具体的な操作は、質問文にありますテーブル1とテーブル2を合わせた1つのクエリを作っています。そのクエリのデザインビューで、フィールドにある"抽出条件"の項目に、「最新日」を抽出するところに (SELECT Max(A.コメント日) FROM [テーブル1(コメント)] AS A WHERE A.顧客ID = [テーブル1(コメント)].顧客ID) とMax関数を使って入力しています。 また「コメント」を抽出するフィールドの抽出条件に『<>"発送"』と手入力しました。

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

意味がわからない。 Excelで何をして、ACCESSで何をしたいの? 更新クエリーで何をするんですか? 選択クエリーで問題なくできると思いますが。

1153mmm
質問者

お礼

ご返答ありがとうございます。 言葉足らずですみません。 何をしたいのかと言いますと、エクセルではデータにある外部データの取り組みを使ってアクセスから抽出したデータをもとに資料を作成しています。 アクセスではデータの管理と最新のデータをとりたいです。 初心者なのでまだ選択クエリがわかりません。 申し訳ありませんが、教えてください。

関連するQ&A

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

  • Access 最新から2件分の日付

    色々と調べたのですが、データが思い通りにならなく困っております。 テーブルの新しい日付から2件を表示したいのですがわかりません。 以下のようなデータがあるのですが ID 日付 1 2009/09/15 1 2009/09/09 1 2009/09/02 2 2009/09/15 2 2009/09/09 IDごとに最新の日付を2件分抽出したいのです。 ID 日付 1 2009/09/15 1 2009/09/09 2 2009/09/15 2 2009/09/09 クエリで、上記のように実現するには、どのようにすればよいのでしょうか? ご指南頂けると助かります。宜しくお願い致します。 環境 OS:XP Access Version:2002

  • Access 日付抽出について

    Access2000のクエリにて、ある特定日付の抽出ができません。 テーブルの日付項目は、日付/時刻型です。 テーブルを開くと、「2008/02/01 12:59:00」のように見えます。 クエリで抽出する時に、「#2008/02/01#」で抽出されると思って いるのですが、実行すると抽出できません。 どのようにクエリ設定をすればよろしいでしょうか?

  • ACCESSのデータ抽出について

    項目が同じ(1)テーブルと(2)テーブルと(3)の産地データをリレーションシップでつなぎデータ■クエリ_結果2のように抽出したいのですが■クエリ_結果2のちょうに重複するデータしか抽出できません。 どうしたら結果1のように全ての商品を抽出できるでしょうか? アクセス初心者です。よろしいくお願いします (1)テーブル【中央11月データ】 バナナ 50 りんご 10 ミカン 100 (2)テーブル【関西11月データ】 バナナ 30 梨 60 (3)産地データ バナナ フィリピン りんご 青森 みかん 愛媛 梨 千葉 ■クエリ_結果1 バナナ フィリピン 80 りんご 青森 10 みかん 愛媛 100 梨 千葉 60 ■クエリ_結果2 バナナ フィリピン 80

  • ACCESSで複数のテーブルで同じ内容の行を抽出

    いつもお世話になっておりあます。 ACCESSのクエリ作成でお聞きしたき件ありまして、 投稿させていただきました。 下記の様な商品購入テーブルA・Bで ・・・テーブル定義・・・ テーブルA 顧客ID 商品名 テーブルB 顧客ID 商品名 ・・・入力データ・・・ テーブルA 顧客ID 商品ID 0001  あめ 0002 コーラ 0003  せんべい テーブルB 顧客ID 商品ID 0001  おかし 0002 コーラ 0003  わたあめ ・・・・・・・・・・・ とのテーブルにて テーブルAとテーブルBの同じ状態の行 0002 コーラ を抽出するには、どのようなクエリを作成すればよろしいのでしょうか? 見当がつかず、こまっております。 どなたか、御対応いただけますと、ありがたいです。

  • 最新データ取得

    いつもお世話になります。 Access 2007のコードを教えていただきたいです。 Access で社員単価管理を作成しています。 クエリで社員の単価を計算させて、日報フォームに表示させることができました。以下のコードで If Not IsNull(Me![個人ID]) Then Me![工数単価] = DLookup("日給", "Q_社員別給与最新日付", "[個人ID]=" & Me![個人ID]) End If 社員の単価は上がる場合がありますので、社員単価入力テーブルから最新の日付のデータを取得するため、クエリを作成しました。 これでうまく行くと思ったら、問題発生しております。 日報フォームのデータを修正する時、最新日付の単価も変わってしまいます。 うまく説明できないですので、以下のようです 社員単価入力テーブル 日付     個人ID 原価金額 20110401   01    6400 20110701   01    8000 日報フォーム 日付    個人ID 出勤時間 退勤時間 工数 残業 日給 20110630   01    8:00    18:00    1   1  7200   20110701   01    8:00    17:00    1   0  8000 データ修正後 日付     個人ID 出勤時間 退勤時間 工数 残業 日給 20110630   01    8:00    17:00    1   0   8000 データ修正後に表示してほしいのは 日付   個人ID 出勤時間 退勤時間 工数 残業 日給     20110630  01   8:00     17:00   1   0   6400 つまり、 社員単価入力テーブルの日付<日報フォームの日付なら、最新の日付のデータで計算してほしいです。そうではない場合、最新日付より前のデータで計算するというコードが書きたいですが、どういう風にに書けばいいか全く、わかりません 教えて下さい。 よろしくお願いします。

  • アクセスの抽出を常に最新版にする

    アクセス2000を使用しフォームより入力したデーターを クエリにより抽出する作業をしていますマクロで 一旦クエリによりテーブルに保存したデーターを削除し 新たに抽出したデーターを保存する作業をしたのですが いちいちメッセージがでてくるのでこまるので イベントプロチャージャーにより処理をしたいのですが サンプルデーター等ありましたら教えていただけませんでしょうか 宜しくお願い致します

  • アクセス データ抽出

    アクセス超初心者です… 教えて下さい… 全顧客情報をまとめたテーブルと(顧客番号、個人情報)、毎月ごとに分けて作っている来店情報(顧客番号と来店日)のテーブルが数か月分あります。 (全顧客情報) (来店情報3月)    (来店情報4月) ID 名前    ID 来店日      ID 来店日 1 Aさま    3 3月4日      3  4月9日 2 Bさま    5 3月12日     10 4月15日 3 Cさま    190 3月21日   15 4月30日 例えばこんな感じでのデータから、各顧客の最終来店日を抽出するにはどうすればいいか…思いつかないのです。 ※来店されるのは、各顧客月に1回か、数ヶ月に1回。 よろしくおねがいします。

  • Accessでのレポートでのクエリ抽出について

    Access2000のクエリについて教えて頂きたいのですが、現在顧客テーブルに何百件のデータがあります。それをレポートで期間指定して抽出したいのですが(例:10月30日~11月27日)このような期間条件に該当するクエリを良ければご教授頂けたらと思います。 顧客テーブルの訪問日時が該当項目になります。

  • アクセス2000でデータの抽出方法

    冬です。アクセス2000に関する質問です。簡単に出来そうだと思っていたら、やり方がわかりません・・・・ 人を管理するテーブルで、一つのフィールドに「3月3日勉強会」「4月4日勉強会」というような文字をうっておいた状態で、「勉強会」という言葉だけを含むデータを抽出して新しいテーブル(クエリ)を作るにはどうすればいいのでしょうか? どなたかよろしくお願いします。

専門家に質問してみよう