はじめまして。
アクセスを猛勉強中の初心者です。
過去記事を探しましたが、解決できませんでしたのでご教示お願いします。
やりたいことは、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関数を入れて最新データの抽出をしようとすると、全ての「発送」を除いたデータが抽出されるので、最新データに該当する顧客のデータが消えてしまいます。
なので、本来のコメントデータが分からない状態になります。
また、エクセル側でパラメータクエリを使って資料を作成し、アクセスに触ったことがない人たちが使用するので、アクセスを更新してといったことができません。
なので、更新クエリなどを使ってのやり方以外の方法はないでしょうか?
全くの初心者ですので、言葉足らずで説明が分かり辛くて申し訳ありません。
ご教示をお願いいたします。
No.2ベストアンサー
- 回答日時:
> 「発送」というワードをはぶいた最新のデータをとりたい
> 全ての「発送」を除いたデータが抽出される
日本語的には、その処理で合ってるように思いますが?
とりあえず、すっごく簡単に考えてみませんか?
選択クエリをソースにして、選択クエリを作れるのはご存知ですよね?
なので、「発送以外」を抽出する選択クエリを作りましょ。
で、コレを基に「最新日」を抽出する選択クエリを作りましょ。
もちろん一発でもいけますが、初めの内は上記で十分ですよ。
難しいことは慣れてからで十分です。
ご返答ありがとうございます。
言葉足らずでした。
「発送」というワードをはぶきたいのですが、それは最新の「発送」というワードだけはぶきたいのです。
Max関数と『<>"発送"』と抽出条件にいれてデータ化すると、データ上では別のコメント(発送ではないコメント)をいれたとしても、過去に「発送」がついた顧客の名前が消えてしまうので、できないのです。。
こんな説明でわかりますか…?
あと、すみません、初心者なもので選択クエリをソースにして、選択クエリを作るやり方がわかりません。
申し訳ありませんが、教えていただけますでしょうか?
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 を使うところの条件に コメント<>'発送' を指定すれば良さそう・・・・
解釈が間違ってましたらごめんなさい。
※ 処理性能はわかりません。
>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は以前にやってみたのですが、ダメでした。。
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からの履歴をすべて紐つけにしてそのシリーズで管理することが必要なのでは?
と思うのですが。
それとも、何らかの問題があったケースを抽出したいのかな?
masatsanさん、tsubuyukiさんの回答をもとにクエリを作り直しました。
そうしましたら出来上がりました!
勉強になりました。
ありがとうございます。
御面倒をおかけしましてすみませんでした。
No.6
- 回答日時:
すいませんが、伝え忘れてました。
悪いことは言いませんから、参考書を一冊買いましょう。
で、読破しましょう。
攻略サイトでピンポイントでコピーペーストしても力にはなりません。
それを理解して、正しく応用するには基本を理解しないといけないのですから。
「発送を除く、しかし、全ての発送を除くと困る」
この言葉の真意がわかり、まだクローズされていないようなら、また参上するかもしれません。
No.5
- 回答日時:
”そのクエリのデザインビューで、フィールドにある"抽出条件"の項目に、「最新日」を抽出するところに
(SELECT Max(A.コメント日) FR。。。。”
ってどういうこと?
初心者の方が select...を使えるわけないと思うけど。どこからSelect...を持ってきたんですか?
ま。予想はつくかないでもないけど。それはだめだよ。
でデザインビューで開いた画面が 選択クエリー ですよ きっと。
で他の方が回答されているように。(参考にしてくださいね。)
デザインビューで開いて検索条件を入れて、そのクエリーを保存する。 SQLソースをコピーするのではなく。
さらにもう一つのクエリーを開いて(デザインビュー)、他の回答者様のようにする。
もちろんもっと簡単にできるけど、現状はちょっと無理だろう。と思う。
なんとなく理解はしているものの、実際にやってみても全く解決しない状態です…
初心者が頑張って解決しようとしたのが間違いだったのでしょうか…
select...は沢山調べてみてこれしか出てこなかったので、
これしか解決ができないと思ったので、使ってみました。
何か他によい解決方法があれば、ご教示下さい!
お忙しいところ、大変ご面倒をお掛けいたしますが、
よろしくお願いいたします。
No.4
- 回答日時:
> 初心者なもので選択クエリをソースにして、選択クエリを作るやり方がわかりません。
そのくらいはご自身で調べましょうよ。と言いたいのをグっと堪えて。
ひとまず、「発送以外」のデータを抽出するクエリを、
選択クエリウィザードに従って作りましょう。
デザインビューまで進んで、
条件に「<>"発送"」で「発送以外」のデータを抽出できますね。
で、「Q_発送以外」と名前をつけて保存しておきましょう。
続いて、選択クエリのウィザードに従って、
最初の「テーブル/クエリ」をさっき作った「Q_発送以外」にしてやりましょう。
で、デザインビューまで進んで、条件でMax関数で最新日を抽出してやるとどうでしょう?
と、言うか、
> 「発送」というワードをはぶきたいのですが、
> それは最新の「発送」というワードだけはぶきたいのです。
なかなか難解な日本語ですが、それはつまり
「各顧客の最新データが"発送"だったら、それは抽出対象」という事ですか?
いや、でもそれだと、
> ・2/1 保留 Aさん
は抽出されてこないですよねぇ?
最新が「発送以外」なら、そのコメントが優先されますよねぇ?
つまり
> ・2/2 次回未定 Bさん
これですよねぇ?
そう考えると「発送」が活きてくるケースなんて無いように思えませんか?
具体的に「どんなケースで"発送"を活かすのか」明示できませんか?
じゃないと、お互いに(他に回答をくださる方も含め)手詰まりですよ。
少なくとも私は、上記の先入観で一杯ですから。
>「各顧客の最新データが"発送"だったら、それは抽出対象」という事ですか?
日本語がおかしくて申し訳ありません。
「発送」というコメント以外の最新データが抽出対象と言うことになります。
なので、「発送」というワードを除いた、それぞれの顧客の最新コメントを抽出したいです
Aさんだけの例を追加すると
1/10 相談
1/30 TELあり
2/1 保留
2/3 発送
だとすると。最新のデータは2/3なのですが、
「発送」する前の対応状況を抽出したいので、
2/1 保留
のデータが出したいのです。
tsubuyukiさんからご教示頂いたようにすると
「発送」以外のデータを抽出するクエリ「Q_発送以外」を作成(<>"発送")
その「Q_発送以外」を使ってもう一つクエリを作って、
>条件でMax関数で最新日を抽出してやるとどうでしょう?
というやり方は理解できました。
ですが、各顧客での最新データを取る為に、
「顧客テーブル」と「Q_発送以外」を繋ぐということですよね?
調べて試してみたMax関数はテーブルにしか反応してくれないようです…
関数がおかしいのでしょうか?調べてみたものを当て込んだだけなので、
反応しないということなのでしょうか?
No.3
- 回答日時:
よわったね。
"最新データの抽出にはMax関数を使ってでき、いらないワードである「発送」はクエリのフィールドの抽出条件に『<>”発送”』と入。。。"
って具体的にどういう操作をしました?
どういう画面ですか(この操作をしている)?
ご返答ありがとうございます。
具体的な操作は、質問文にありますテーブル1とテーブル2を合わせた1つのクエリを作っています。そのクエリのデザインビューで、フィールドにある"抽出条件"の項目に、「最新日」を抽出するところに
(SELECT Max(A.コメント日) FROM [テーブル1(コメント)] AS A WHERE A.顧客ID = [テーブル1(コメント)].顧客ID)
とMax関数を使って入力しています。
また「コメント」を抽出するフィールドの抽出条件に『<>"発送"』と手入力しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
アクセス・クエリの抽出条件(...
-
access クエリの抽出条件を入れ...
-
ACCESS クエリの抽出条件を動的...
-
accessの日付フィールドから前...
-
最大値以外の抽出方法
-
アクセス2000で、DBの0と空白以...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
元データから連続5日以上だった...
-
アクセスでの抽出方法(日付+時...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
ExcelのVBAで、XMLファイルのデ...
-
エクセルのマクロで検索・抽出...
-
クエリの進行状況を知りたい。
-
access 無作為抽出をしたい
-
Access 選択クエリ 演算 抽...
-
accessクエリで直前の水曜日〜...
-
access 文字列で範囲指定する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESS 「パラメータの入力」...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
Access テーブルを分割してエク...
-
PCゲームから音声ファイルを抽...
-
アクセス・クエリの抽出条件(...
-
accessの日付フィールドから前...
-
エクセルのマクロで検索・抽出...
-
元データから連続5日以上だった...
-
アクセスでの抽出方法(日付+時...
-
access クエリの抽出条件を入れ...
-
ACCESS クエリで”1”でないもの...
-
ACCESSのクエリで集計
-
ACCESS クエリの抽出条件を動的...
-
クエリの進行状況を知りたい。
-
最大値以外の抽出方法
-
Access 2003 iif [日付フィール...
-
Access:クエリの複数『or条件...
-
アクセスのクエリで空白データ...
おすすめ情報