ACCESSのクエリで悩んでいます。ご回答頂けると幸いです。

<やりたいこと>
更新履歴を残しつつ、現在事項のみを抽出する作成クエリを作りたい。

<元テーブル : 履歴事項 >

ID│更新日 │コード│内容1  │内容2  │更新理由
01│4/22│001│あいうえお│かきくけこ│新規
02│5/22│002│さしすせそ│たちつてと│新規
03│5/22│001│なにぬねの│     │はひふへほ

更新があったときは、変更する内容だけを入力し、
変更のない内容はNULLにします。


<作成したいテーブル : 現在事項>

コード│内容1  │内容2  
001│なにぬねの│かきくけこ
002│さしすせそ│たちつてと

コードごとに更新日が最新のものを抽出し、ブランクの内容があったら、
その直近の更新日のものを抽出してくるようにしたいのです。


当方初心者のため、できればクエリのデザイン画面で
できる方法があるといいのですが、難しいならSQLも頑張ります。
ご回答、よろしくお願い致します。

A 回答 (1件)

クエリのSQLビューで以下を貼り付け実行してみるとどうなりますか。



SELECT T1.コード,
(SELECT TOP 1 Q1.内容1 FROM 履歴事項 AS Q1 WHERE Q1.コード=T1.コード AND Not Q1.内容1 Is Null ORDER BY Q1.更新日 DESC) AS 内容1,
(SELECT TOP 1 Q2.内容2 FROM 履歴事項 AS Q2 WHERE Q2.コード=T1.コード AND Not Q2.内容2 Is Null ORDER BY Q2.更新日 DESC) AS 内容2
FROM 履歴事項 AS T1
GROUP BY T1.コード;

直にテーブルを作成するのなら、FROM の前に INTO 現在事項 を入れてみてください。

この回答への補足

ご回答が遅くなって申し訳ありません。
丸写しはよくないと思うので、SQLを理解すべく頑張っているのですが、なかなか難しくて。もう少し頑張ってみます。お時間ください。

補足日時:2009/05/29 21:29
    • good
    • 0
この回答へのお礼

ありがとうございました。

ただ、やはりSQLが難しいのと、ブランクの内容があったらその直近の更新日のものを抽出となると、ブランクに変更することができなくなるので、更新日ごとにすべての内容を入れるようにして、クエリの2段重ねで作成しました。

クエリ1で、コードをグループ化し、更新日の最大で集計。
クエリ2で、クエリ1のコードと更新日に、履歴事項テーブルをくっつける。

これでなんとなくうまくいきました。
お騒がせして申し訳ありませんでした。

お礼日時:2009/05/30 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QYou Tubeの再生履歴の削除について

You Tubeの再生履歴の削除について質問です。

再生履歴を消そうとした際に、PCの再生履歴から履歴から消したい動画を選択し削除しようとしました。

いつも通り削除した動画にチェックを入れ、削除ボタンを押しました。そのときは消えても、更新ボタンを押したり、少し時間が経ってから再生履歴を見ると、と削除したはずの動画がまた再生履歴に残っています。何度削除しても再生履歴に削除したい動画が残っています。

これはスマホでも削除しようとしましたが、そのときは消えても更新したり、改めて再生履歴を見ると消したはずの動画が履歴に残っています。

このようなことが起きた場合どうしたらいいのですか?

Aベストアンサー

私も同じ現象で困っていましたが、以下の方法で削除できました。


1.PCで、削除したい履歴にチェックを入れて、削除ボタンを押します。

2.すぐに画面左側の「後で見る」の上の、自分のアカウントをクリック。


このあと、再生履歴に戻って確認してみてください。

この方法で、私の場合は履歴が削除できました。

Q更新不可能なクエリに対して更新クエリを実行する方法

複数のテーブルをつないでクエリ(Q1)を作成し、
そのクエリを基に更新クエリを作成したら、
画面のように「更新可能なクエリである事が必要です」
となってしまったのですが、
このクエリ(Q1)の条件で更新クエリをしたい場合、
どういう方法があるのでしょうか?

現在更新不可能なクエリに対して更新クエリを実行する方法はありますか?

Aベストアンサー

以下のURLが参考になるかと思います。
http://support.microsoft.com/kb/328828/ja

一番単純な方法としては、テーブル作成クエリ等で一度Q1を仮のテーブルに落として
そのテーブルを基に更新クエリを実行する、という方法があります。。

QIE7β3の履歴が削除できない

IE7β3の閲覧の履歴が削除できません。履歴の「今日」という項目を右クリックし削除をしてみるとそのときは消えるのですが、IEを再起動するとまた履歴が削除される前の状態に復活してしまいます。
履歴を削除する方法を教えてください。よろしくお願いします。

Aベストアンサー

「今日」ですのでまた開いた時点で履歴が作成されます。
問題ありません。

「履歴なんて残さないで」の方は
ツール⇒インターネットオプション⇒履歴の設定⇒ページを履歴で保持する日数を0にしてください。
履歴が作成されなくなります。

Q更新クエリの日付抽出方法について

Access2003を使用しています。

受注一覧DBを作成しています。
受注入力から請求書発行までを行いたいとおもっています。
テーブル:受注
クエリ:請求書発行検索
フォーム:受注入力,請求書発行検索

テーブル受注には、受注期間(開始日:2006/3/1~終了日:2006/4/30)
請求予定月2006年3月 というフィールドがあります。 

請求書発行検索フォームでは、検索テキストボックスに 2006/3 と入力すると対象データがを
抽出するようにしています。

請求書発行は、受注期間中の毎月月末です。
3/1-4/30の契約だと、3/31と4/30の2回発行することになります。現状は月末請求後に
手入力で請求月を入力していますが、更新クエリで自動入力することはできるでしょうか??

「更新クエリ実行日が受注終了日よりも前ならば、請求予定月に1月足す」
かつ、「請求予定日が今月となっているときはそのままにする」

といったイメージです。。

いろいろと調べたのですが、書き方がわからなかったのです。
どうぞよろしくお願いいたします。

Access2003を使用しています。

受注一覧DBを作成しています。
受注入力から請求書発行までを行いたいとおもっています。
テーブル:受注
クエリ:請求書発行検索
フォーム:受注入力,請求書発行検索

テーブル受注には、受注期間(開始日:2006/3/1~終了日:2006/4/30)
請求予定月2006年3月 というフィールドがあります。 

請求書発行検索フォームでは、検索テキストボックスに 2006/3 と入力すると対象データがを
抽出するようにしています。

請求書発行は、受注期間中の毎月月末です。
...続きを読む

Aベストアンサー

process9です。

蛇足かもしれませんが、もう1つやり方があったので。。。

****締め日を指定して更新するクエリ*****
UPDATE 受注 SET 請求予定月 = DateAdd("m",1,[請求予定月])
WHERE [受注期間開始日]<=CDATE([締め日]) And CDATE([締め日])<=[受注期間終了日] And FORMAT([請求予定月],"yyyymm")=FORMAT(CDATE([締め日]),"yyyymm") And FORMAT([受注期間終了日],"yyyymm")>FORMAT(CDATE([締め日]),"yyyymm");

****締め日を指定して更新するクエリの試験用SQL*****
SELECT * FROM 受注
WHERE [受注期間開始日]<=CDATE([締め日]) And CDATE([締め日])<=[受注期間終了日] And FORMAT([請求予定月],"yyyymm")=FORMAT(CDATE([締め日]),"yyyymm") And FORMAT([受注期間終了日],"yyyymm")>FORMAT(CDATE([締め日]),"yyyymm");

上記の更新SQL(選択SQLもですが)であれば、
締め日を実行日でなく、締め日を指定できます。
実行すると 締め日の入力を求められます。
そこで 2006/3/31(3月締め) や 2006/4/30(4月締め)
などの締め日を入力すると
その月の締め日に指定した月で更新されますよ。

必ず末日又は翌月中に実行するなら、前のSQLの方が入力がない分
簡便ですし、誤入力(締め日とは違う日付でも実行されちゃう)も防げます。

process9です。

蛇足かもしれませんが、もう1つやり方があったので。。。

****締め日を指定して更新するクエリ*****
UPDATE 受注 SET 請求予定月 = DateAdd("m",1,[請求予定月])
WHERE [受注期間開始日]<=CDATE([締め日]) And CDATE([締め日])<=[受注期間終了日] And FORMAT([請求予定月],"yyyymm")=FORMAT(CDATE([締め日]),"yyyymm") And FORMAT([受注期間終了日],"yyyymm")>FORMAT(CDATE([締め日]),"yyyymm");

****締め日を指定して更新するクエリの試験用SQL*****
SELECT * ...続きを読む

Q観覧履歴の削除

パソコンの履歴を削除するとき、インターネットオプションの履歴のクリアから削除しているのですが、それでもう完全に履歴は削除されているのでしょうか。
もしされていないのならどうすれば完全に履歴を消す事が出来ますか

Aベストアンサー

こんにちは。

ブラウザでページを閲覧すると、
(1)ページのタイトル・URLなどの情報が履歴に保存される
(2)キャッシュフォルダに、ページのテキストや画像などが保存される (再訪問時にキャッシュを参照して素早く表示するため)
主にこの2つがPC内に保存されます。

履歴のクリアだけですと、(1)の情報しか削除されていなく、キャッシュの方は残っているので『完全に』は削除されていないと言えます。
キャッシュは「インターネット一時ファイル」と呼ばれていまして、同じく「インターネットオプション」の画面から削除が可能です。

これに加えて『Cookie』や『フォーム情報』などの削除も行えば、完全削除に限りなく近くなると思われます。
(『フォーム情報』の削除は、IE6なら「コンテンツ」タブから、IE7は「全般」タブから可能だと思いました)

Qaccess 更新クエリ?追加クエリ?

access超初心者です。

いま、下記のような在庫表をつくっています。
(出庫テーブルは省略してます)



入庫テーブル
 ID
 入庫日付
 大分類
 中分類
 小分類
 数量
 
在庫テーブル
 ID
 大分類 
 中分類 
 小分類
 最初の数
 入庫数 
 出庫数

入庫更新クエリ
*入庫→在庫  大分類
       中分類   
       小分類
・入庫の全レコードと在庫表の同じ結合フィールドのレコードだけを含める

で結合しています。

*在庫表の入庫数
 レコードの更新で
 NZ([在庫数]![入庫数],0)+NZ([入庫]![数量],0)

といれています。




入庫テーブルに入力していき
その都度、
入庫更新クエリにて更新し
在庫表に反映させていきたいと思っています。

入庫表には、この先
在庫表にないものもでてくるので
在庫表にないものは
追加、あるものは、更新としていきたいです。

今の状態だと
入庫表のものは、更新クエリでいったん在庫表に反映されるのですが
入庫表にレコードを追加して
また更新クエリをかけると
在庫表が、前に更新したレコードの分も
重複して反映してしまいます。

これをなくすには、どういった方法が
ありますか?

宜しくお願いいたします

access超初心者です。

いま、下記のような在庫表をつくっています。
(出庫テーブルは省略してます)



入庫テーブル
 ID
 入庫日付
 大分類
 中分類
 小分類
 数量
 
在庫テーブル
 ID
 大分類 
 中分類 
 小分類
 最初の数
 入庫数 
 出庫数

入庫更新クエリ
*入庫→在庫  大分類
       中分類   
       小分類
・入庫の全レコードと在庫表の同じ結合フィールドのレコードだけを含める

で結合しています...続きを読む

Aベストアンサー

No1です。入庫データをクリアするのではなく、記帳のときに記帳済みのマークを入れておいて、入庫更新クエリーのとき記帳すみのマークのあるものを除外するほうがよさそうです。

Qメール送信履歴削除について

ご質問です。
会社のGmailの送信履歴を削除した場合、削除したという履歴も会社側はわかりますか?
先日、自分が共有メールから送ったメールが履歴を残しておく必要がないと思ったため、送信履歴の削除を行なったのですが、よくよく考えると送信履歴を削除することがよくないことなのではと思い質問させていただきました。

Aベストアンサー

個人が所有をするPCであれば、メールの履歴を削除しても宜しいかとは思いますが、
会社に設置をされているPCは上層部の管理課が管理をしているので、メールの送受信の履歴を削除すればデーターとして記録をされます。

受信をしたメールに写真などの添付ファイルがある場合は、ファイルを開かずメールそのものを削除するようにしてください。
ワンクリックでウイルスに汚染をされる危険性もありますから。

Q追加クエリ???更新クエリ???

アクセスでデータベースを管理しようとしているものです。
利用しようとするデータ10万件をcsvからインポートしました。
その10万件のデータを定期的にエクセルに落としては(1000件ほど)修正を加えて、また元のデータに上書きするといった方法を取りたいのですが。

例:
書籍一覧
No.作品名 出版元 作家名 人気度(%) コメント

みたいなデータが10万件。
例えばコメントや人気度が空欄のデータもあり、クエリで抽出→EXCELで編集(コメント等の記入)→インポートして元データに上書き。
という流れをしたいのですが。
利用するクエリがイマイチわかりません。
もしかしたら物凄い簡単な事かもしれないのですが、かなり混乱しててまとまった考えができない状態です。

また、上記のデータに確実に被っている作品群がエクセルにあり(共通のIDなし)、それは上記のデータのどのIDにあたるかまで特定できエクセルで纏めるところまでは出来たのですが、共通のIDであることは確かなのに、アクセスにインポートしてリレーションで結んでもうまく突合してくれません。

10万件のデータのデータ型がオートナンバー式であるのに対し、エクセルで纏めた方のIDは数値型というのが問題なのでしょうか?(その割にはリレーションの段階でエラーは出ないのですが)。
エクセル時代の書式がいけないかとも思い確かめたりしたのですが。
原因が分かりません。

パラパラと質問してしまいましたが、どなかた分かる方がいらっしゃれば宜しくお願いいたします。

アクセスでデータベースを管理しようとしているものです。
利用しようとするデータ10万件をcsvからインポートしました。
その10万件のデータを定期的にエクセルに落としては(1000件ほど)修正を加えて、また元のデータに上書きするといった方法を取りたいのですが。

例:
書籍一覧
No.作品名 出版元 作家名 人気度(%) コメント

みたいなデータが10万件。
例えばコメントや人気度が空欄のデータもあり、クエリで抽出→EXCELで編集(コメント等の記入)→インポートして元データに上書き。
という流...続きを読む

Aベストアンサー

>>その10万件のデータを定期的にエクセルに落としては(1000件ほど)修正を加えて、また元のデータに上書きするといった方法を取りたいのですが。

 なぜ、こういう運用にするのか疑問ですね。アクセスにデータをインポートしたら、アクセス上でデータを更新するのが普通だと思いますが。こういう運用はトラブルになりやすいです。

>>例えばコメントや人気度が空欄のデータもあり、クエリで抽出→EXCELで編集(コメント等の記入)→インポートして元データに上書き。

 →インポートして元データに上書き。
ではなく、
 →一時テーブルにインポート→一時テーブルと元テーブルを更新クエリで更新する

となるのでは?また、普通は、オートナンバーをマッチングキーに使用しないほうがいいと思います。

 ということで、とりあえず、CSVデータを100件程度に絞って、自分がやりたい更新処理がまともにできるか実験してみるのがいいと思います。

Qパソコン履歴の削除方法

こんにちは。

パソコン履歴の削除方法について質問致します。。。。(機種はXPです)

通常、共用パソコンを使用してインターネットを閲覧した後、その履歴をセキュリティやプライバシーの関係から削除する場合は。。。。。


履歴欄→右クリックでインターネット閲覧履歴を全削除。

或いは、プロパティ→インターネット一時ファイル→Cookieの削除をクリック。

又はそのまま、プロパティ→全てのファイルの削除をクリック。

更に、ページを履歴に保存する日数は通常は20日に設定されているのでこれも0日に変更。

………と、いった感じでいつも逐一削除しておりますが、友人から「これでもまだ履歴を辿ろうと思えばいくらでも調べられるよ」と言われました。

パソコンは素人ですので、更に詳しく閲覧履歴を削除出来るのでしたら尚便利かな、と思いまして今回質問致しました。。。。。

詳しいインターネット閲覧履歴の削除方法を御存知の方がいらっしゃいましたら、初歩的な質問で大変恐縮ですが、お時間のある時に教えて頂ければとても嬉しいです。

よろしくお願い申し上げます。

こんにちは。

パソコン履歴の削除方法について質問致します。。。。(機種はXPです)

通常、共用パソコンを使用してインターネットを閲覧した後、その履歴をセキュリティやプライバシーの関係から削除する場合は。。。。。


履歴欄→右クリックでインターネット閲覧履歴を全削除。

或いは、プロパティ→インターネット一時ファイル→Cookieの削除をクリック。

又はそのまま、プロパティ→全てのファイルの削除をクリック。

更に、ページを履歴に保存する日数は通常は20日に設定されているのでこれ...続きを読む

Aベストアンサー

こちらのツールを使えば完全消去できますよ。
http://www.runexy.co.jp/products/acronis-privacyexpert-9/index.html

QACCESS2000でクエリを抽出条件で抽出

VBA上でクエリの抽出データを取得してファイルに書き込むというプログラムを書いております。

抽出条件として、今日の日付のレコードを取得したいのですが型が一致しませんとエラーになります。

strSQL = "SELECT * FROM " & (クエリー名)& " where (クエリー.カラム名)='" & Format(Date, "yyyy/mm/dd") & "'"

クエリーのカラム名は全角漢字です。

どこがおかしいのでしょうか?

よろしくお願いいたします。

Aベストアンサー

where (クエリー.カラム名)='" & Format(Date, "yyyy/mm/dd") & "'"
where (クエリー.カラム名)=#" & Format(Date, "yyyy/mm/dd") & "#"
では?
日付型の場合、# で、文字型は ' 、数値 は無しです
全角右括弧は投稿の際の手違い?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報