- ベストアンサー
AC2000のクエリで重複データから最新のデータだけ抽出したいのですが・・・
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)
- 専門家の回答
質問者が選んだベストアンサー
>クエリー結果をファイルに出力(1) 先に結果ファイルを作成します >グループ化をするとはどういう処理を言うのでしょうか? クエリー→新規作成→デザインビュー→OK テーブル→テーブルを選択→追加→閉じる 主索引(主キー)と更新回数をダブルクリック Σキークリック 更新回数の集計をクリックし最大を選択 更新回数の並べ替えをクリックし昇順を選択 >クエリー結果をファイルに出力(2) 一番上のクエリー→追加→結果ファイルを指定((1)で作成したもの) です。がんばって下さい。 何かあれば補足して下さい。 但し次回は朝になります。ご了承下さい。
その他の回答 (2)
- stork
- ベストアンサー率34% (97/285)
更新データ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.更新回数 = 一時テーブル.更新回数) と言った感じですかね。
お礼
storkさん回答有難う御座います。 SQLは良く分からないのですが、このSQLは更新データBの方に記述してやると良かったでしょうか。 早速やってみたいと思います。 ありがとうございます。
- k_eba
- ベストアンサー率39% (813/2055)
まず考え方ですが 1つのファイルをクエリー等で選択してどのこうのとやる場合 クエリーを続けると上手く動作をしないことが多々あります。 それの解決策ですが、クエリー結果をファイルに出力し それを元に処理をする方法がゆうこうです。 さて1)の方法ですが 主キーと更新回数だけのクエリーで 主キーをグループ化し 更新回数を集計、最大、昇順でファイルを作成してから 実行された方が良いと思います。 がんばって下さい。
お礼
早速の回答有難う御座います。 >クエリーを続けると上手く動作をしないことが多々あります。 クエリはあまり重ねて使わないほうが良いということですね。 知識が乏しくて申し訳ありませんが、 >クエリー結果をファイルに出力しそれを元に処理をする方法 と、グループ化をするとはどういう処理を言うのでしょうか? ご指導いただけたら幸いです。 よろしくお願い致します。 また、早速やってみます。
お礼
k_ebaさん親切に手順を踏んでの説明有難う御座います。 とても分かり易く感謝いたします。 万一、うまく出来ないときはまた質問させてください。 どうぞよろしくお願い致します。 有難う御座いました。