- ベストアンサー
データの二重表示の原因
お尋ねします。 アクセスにてデータとデータをクエリで作成した時なのですが、 データが二重表示されます。 そのデータはある数値を打つと全ての取引先が表示されるようになって いるのですが、なぜか何件か重複してしまいます。 それで質問なのですが、その原因として考えれることや もしくはそれを解明できる方法や重複してしまったデータを 重複クエリウィザードを使わずに削除する方法を 教えて頂きたいのです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>重複クエリがインストールされておらず・・ SQLビューで下記を記述もしくはコピーすれば重複するレコードを表示できます。 例えばTestクエリのIDの重複をチェックし表示する場合。 SELECT [testクエリ].ID FROM [testクエリ] WHERE ((([testクエリ].ID) In (SELECT [ID] FROM [testクエリ] As Tmp GROUP BY [ID] HAVING Count(*)>1 ))) ORDER BY [testクエリ].ID; testクエリ・IDを使っているクエリ名やテーブル名やフィールド名に置き換えて試してください。これで重複レコードを表示できます。 重複しているレコードが分かったら削除クエリを作って削除すれば簡単かも・・。 クエリのJOINの仕方とテーブルの重複しているキーで単一で表示されたり重複したりINNER JOINからLEFT JOINにすると重複表示されたりとかします。 重複するレコードを全て削除するなら下記のSQLでできますが・・重複しているレコード全部削除されてしまいます。何か重複レコードに別の副キーなどあれば良いのですが。 Delete From テーブル名 Where ID In (Select ID From テーブル名 Group By ID Having Count(*) > 1) 簡単に重複をなくすのは後は重複レコードのあるテーブルをテーブル構造のみでコピーし重複なしのインデックスもしくは主キーを設定しそのテーブルにレコードをコピーすれば重複レコードは除かれます。
その他の回答 (2)
- O_cyan
- ベストアンサー率59% (745/1260)
>データが二重表示されます。 例えばクエリ上でテーブルを結合している場合。1対多の状態で多側にあたるテーブルに同一キーのレコードが複数あるレコードのキーを抽出すると多側にあるレコード数分重複した1側のテーブルのレコードも表示されます。 クエリの結合の仕方・テーブルの重複レコード・抽出条件などが原因ではないでしょうか。 #1の方も言っていますが質問内容からではこのくらいしか予想できません。 >重複してしまったデータを重複クエリウィザードを使わずに削除する方法 単純にテーブルのレコードをソートして1レコードづつ確認しながら削除する。 VBでキーを変数に代入して同一キーのレコードを削除する記述を作る。 など・・。ありますが。 でも重複クエリを使った方が簡単ではないでしょうか。
補足
>例えばクエリ上でテーブルを結合している場合。 >1対多の状態で多側にあたるテーブルに同一キーのレコードが >複数あるレコードのキーを抽出すると多側にある >レコード数分重複した1側のテーブルのレコードも表示されます。 確かにおっしゃるとおり抽出条件のコードが軸側にも そうでない方にもあります。なんせ抽出条件が ずばりそのリレーションをするためのデータなのです。 下の方の補足にもありますように全てのデータに重複が見られる 訳ではないのが、余計に問題をややこしくさせています…。 >でも重複クエリを使った方が簡単ではないでしょうか。 重複クエリがインストールされておらず、それをするための CD-ROMもないので使えないのです。 やはり一つずつ削除するしかないのですね。 >VBでキーを変数に代入して同一キーのレコードを >削除する記述を作る。 というのはどういう風にやるのでしょう? よかったら教えていただきたいです。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>そのデータはある数値を打つと全ての取引先が表示されるようになって >いるのですが、 多分これが原因でしょう これをどのようにやっておられるのかを説明しないと 推理のしようがありません
補足
補足します。 マスターテーブルを軸にして18個のテーブルを リレーションしています。 そしてそのリレーションから選択クエリを作成し、 抽出するという方法でやっております。 特に式は組んでいません。 やはりこれだとテーブルが多すぎるんでしょうか? 前の方はこの方法で検索システムを構築していたので、 そのシステムを流用し、最新のデータテーブルと 差し替えてやったのですが…。 ちなみに選択クエリで二重表示されるのは全てではなく 総データ数の一割にも満たない数なので 余計にそうなる理由が分かりません。
お礼
お返事遅くなって申し訳ございません。 二度にわたる回答ありがとうございます。 重複クエリや削除クエリを使わずとも 出来る方法も教えて頂き大変参考にさせて頂いた結果、 無事に重複データを削除する事が出来ました! アクセスは本当に奥深いですね。