OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・

  • すぐに回答を!
  • 質問No.155505
  • 閲覧数665
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 67% (38/56)

Windows98Access2000です。
下記のようなテーブルを元にしたクエリがあります。
主索引(主キー)|手配番号 |行番号|更新回数|発行日 |販売先|・・・
0101023456  |0101023456|  56|   1|19990301|A001 |・・・
0101034567  |0101034567|  67|   3|20000503|A235 |・・・
   ・       ・     ・   ・   ・    ・
仮に既存データをA、更新データ(TXT)をBとします。
(更新データは毎朝TXTで決まったフォルダーに落ちてきます。)

同じ項目の更新データBを、下記の条件で最終的に既存データAに新規追加、
上書したいのです。

1.更新データBの主索引は主キーにはなっておらず番号がダブっています。
  ただレコードごとに「更新回数」項目に1や2といった番号が入ってますので
  、その中から同じ主索引番号がある場合更新回数の一番大きな番号だけを抽出
  したい。

2.1で抽出した更新データBを今度は、既存データA(主索引は主キー)に追加す
  るのですが、上記と同じくすでに重複する主索引番号が存在する場合A、Bデー
  タの「更新回数」項目を見て一番大きい番号を反映(上書)させたい。

2の既存データに追加だけは追加クエリを作り重複しないデータは追加することが
出来るのですが、重複しているデータは「XX件の重複データが・・・」とでて
追加することが出来ません。(あたりまえですかf^^;)
ちょっとわけのわからない説明になってしまいましたのでやりたいことを簡単に
いいますと、更新データから既存データへ主索引がダブることなく毎朝送られて
くる最新データをテーブルに取り込みたいということなのです。
ちょっと思ったのですが、もしかして私は抽出条件式が分かってないだけなので
しょうかf^^;
おかしな質問で申し訳ありませんが、ご指導の程よろしくお願い致します。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 39% (813/2055)

>クエリー結果をファイルに出力(1)
 先に結果ファイルを作成します
>グループ化をするとはどういう処理を言うのでしょうか?
 クエリー→新規作成→デザインビュー→OK
 テーブル→テーブルを選択→追加→閉じる
 主索引(主キー)と更新回数をダブルクリック
 Σキークリック
 更新回数の集計をクリックし最大を選択
 更新回数の並べ替えをクリックし昇順を選択
>クエリー結果をファイルに出力(2)
 一番上のクエリー→追加→結果ファイルを指定((1)で作成したもの)
です。がんばって下さい。
何かあれば補足して下さい。
但し次回は朝になります。ご了承下さい。
 
 
 
お礼コメント
tokin

お礼率 67% (38/56)

k_ebaさん親切に手順を踏んでの説明有難う御座います。
とても分かり易く感謝いたします。
万一、うまく出来ないときはまた質問させてください。
どうぞよろしくお願い致します。
有難う御座いました。
投稿日時 - 2001-10-22 18:30:10
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 39% (813/2055)

まず考え方ですが 1つのファイルをクエリー等で選択してどのこうのとやる場合 クエリーを続けると上手く動作をしないことが多々あります。 それの解決策ですが、クエリー結果をファイルに出力し それを元に処理をする方法がゆうこうです。 さて1)の方法ですが 主キーと更新回数だけのクエリーで 主キーをグループ化し 更新回数を集計、最大、昇順でファイルを作成してから 実行された方が良いと思います ...続きを読む
まず考え方ですが
1つのファイルをクエリー等で選択してどのこうのとやる場合
クエリーを続けると上手く動作をしないことが多々あります。
それの解決策ですが、クエリー結果をファイルに出力し
それを元に処理をする方法がゆうこうです。

さて1)の方法ですが
主キーと更新回数だけのクエリーで
主キーをグループ化し
更新回数を集計、最大、昇順でファイルを作成してから
実行された方が良いと思います。
がんばって下さい。
お礼コメント
tokin

お礼率 67% (38/56)

早速の回答有難う御座います。
>クエリーを続けると上手く動作をしないことが多々あります。
クエリはあまり重ねて使わないほうが良いということですね。

知識が乏しくて申し訳ありませんが、
>クエリー結果をファイルに出力しそれを元に処理をする方法
と、グループ化をするとはどういう処理を言うのでしょうか?
ご指導いただけたら幸いです。
よろしくお願い致します。
また、早速やってみます。
投稿日時 - 2001-10-22 17:15:31


  • 回答No.2
レベル11

ベストアンサー率 34% (97/285)

更新データBは主索引+更新回数で重複しない値になります。主索引ごとの更新回数の最大を取得して、どうのこうのやればいいわけです。 1.更新データBから一時テーブルの作成 select 主索引,max(更新回数) as 最終更新 into 一時テーブル from 更新データB group by 主索引 2.更新されているデータを予め削除する delete 既存データA.* from 既 ...続きを読む
更新データBは主索引+更新回数で重複しない値になります。主索引ごとの更新回数の最大を取得して、どうのこうのやればいいわけです。

1.更新データBから一時テーブルの作成
select 主索引,max(更新回数) as 最終更新
into 一時テーブル
from 更新データB
group by 主索引

2.更新されているデータを予め削除する
delete 既存データA.*
from 既存データA inner join 一時テーブル
   on 既存データA.主索引 = 一時テーブル.主索引

3.既存データAへ追加データ、更新データをinsert
insert into 既存データA (主索引,更新回数.....)
select 更新データB.主索引,更新データB.更新回数...
from 更新データB inner join 一時テーブル
   on (更新データB.主索引 = 一時テーブル.主索引)
     and (更新データB.更新回数 = 一時テーブル.更新回数)

と言った感じですかね。
お礼コメント
tokin

お礼率 67% (38/56)

storkさん回答有難う御座います。
SQLは良く分からないのですが、このSQLは更新データBの方に記述してやると良かったでしょうか。
早速やってみたいと思います。
ありがとうございます。
投稿日時 - 2001-10-22 17:46:26
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ