Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索


Q&A-011 (テーブルに)同じデータがあった場合(、1つのレコードに纏め上げる)一例



タイトル : 連続して同じデータがあった場合
記事No : 11040
投稿日 : 2003/04/22(Tue) 20:26
投稿者 : むく

OS:Win98,Me
Access Version:2000

こんばんわ。

テキストファイルからテーブルにデータをインポートします。
インポートしたデータの中で連続して全く同じ内容のレコードがあった場合、片方を消してダブリをなくしたいのですが、どの様にすればよいのでしょうか?テーブルは以下のようになっています。

ID:オートナンバー
なまえ:テキスト
材料1:テキスト
材料2:テキスト
材料3:テキスト

連続して同じとは以下のようなデータの場合

1 カレー 鶏肉 いも たまねぎ
2 カレー いも 肉 たまねぎ
3 カレー いも 肉 たまねぎ
4 カレー 鶏肉 いも たまねぎ

2と3の場合です。1と4は別として扱いたいのです。

よって結果としては以下の様にしたいのです。

1 カレー 鶏肉 いも たまねぎ
2 カレー いも 肉 たまねぎ
4 カレー 鶏肉 いも たまねぎ
 

>連続して全く同じ内容のレコードがあった場合、片方を消してダブリをなくしたいのです

連続していなければ、全てクエリを使用して簡易に仕上げる方法があります。連続しているという条件の場合は、レコードセットを用いてテーブルの各フィールドを調べるという手が考えられますが、途方も無く構築に手間がかかります。よって、この場合は、選択クエリを用いて全フィールドに並び替えを実施し手作業が一番効率いいんじゃないでしょうか?

 

テーブルデータを下記のように想定します。

 

ID 項目 種類1 種類2 種類3
3 2001/12/02 \2,310 \4,530 \2,310
4 2001/12/02 \6,550 \2,310 \6,550
6 2001/12/02 \2,310 \4,530 \2,310
7 2001/12/02 \6,550 \8,620 \3,100
8 2001/12/02 \3,970 \6,550 \6,550
10 2001/12/02 \6,550 \8,620 \3,100
11 2001/12/02 \8,620 \6,550 \3,100
14 2001/12/02 \3,100 \8,620 \8,620

 

最終的には、下記のテーブル構成になります。

 

ID 項目 種類1 種類2 種類3
* 2001/12/02 \2,310 \4,530 \2,310
4 2001/12/02 \6,550 \2,310 \6,550
7 2001/12/02 \6,550 \8,620 \3,100
8 2001/12/02 \3,970 \6,550 \6,550
* 2001/12/02 \6,550 \8,620 \3,100
11 2001/12/02 \8,620 \6,550 \3,100
14 2001/12/02 \3,100 \8,620 \8,620

 

まず、考え方を申し上げますと、

  1. バックアップテーブルを作成する。(tbl_sample_backup)

  2. 重複クエリを利用してダブリのレコードだけをピックアップする。

  3. 集計クエリでダブリのレコードを纏める。

  4. 削除クエリで、2.から求めたレコードを削除する。

  5. 追加クエリで、3.から求めたレコードを追加する。

テーブルデータの削除が伴いますので、バックアップテーブルを先ず作成する必要があります。重複レコードをを求めるのもこのバックアップテーブルから行っています。

 

 

実行する順番については、クエリ名の最後に数字を入れていますので、必ずこの順番どおりに作業をして下さい。

 

 

2003/04/22


Q&A-011 (テーブルに)同じデータがあった場合(、1つのレコードに纏め上げる)一例


 

-Microsoft Access Club-