• ベストアンサー

データの二重表示の原因

お尋ねします。 アクセスにてデータとデータをクエリで作成した時なのですが、 データが二重表示されます。 そのデータはある数値を打つと全ての取引先が表示されるようになって いるのですが、なぜか何件か重複してしまいます。 それで質問なのですが、その原因として考えれることや もしくはそれを解明できる方法や重複してしまったデータを 重複クエリウィザードを使わずに削除する方法を 教えて頂きたいのです。 よろしくお願いします。

  • 3z56u
  • お礼率92% (23/25)

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.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) 簡単に重複をなくすのは後は重複レコードのあるテーブルをテーブル構造のみでコピーし重複なしのインデックスもしくは主キーを設定しそのテーブルにレコードをコピーすれば重複レコードは除かれます。

3z56u
質問者

お礼

お返事遅くなって申し訳ございません。 二度にわたる回答ありがとうございます。 重複クエリや削除クエリを使わずとも 出来る方法も教えて頂き大変参考にさせて頂いた結果、 無事に重複データを削除する事が出来ました! アクセスは本当に奥深いですね。

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>データが二重表示されます。 例えばクエリ上でテーブルを結合している場合。1対多の状態で多側にあたるテーブルに同一キーのレコードが複数あるレコードのキーを抽出すると多側にあるレコード数分重複した1側のテーブルのレコードも表示されます。 クエリの結合の仕方・テーブルの重複レコード・抽出条件などが原因ではないでしょうか。 #1の方も言っていますが質問内容からではこのくらいしか予想できません。 >重複してしまったデータを重複クエリウィザードを使わずに削除する方法 単純にテーブルのレコードをソートして1レコードづつ確認しながら削除する。 VBでキーを変数に代入して同一キーのレコードを削除する記述を作る。 など・・。ありますが。 でも重複クエリを使った方が簡単ではないでしょうか。

3z56u
質問者

補足

>例えばクエリ上でテーブルを結合している場合。 >1対多の状態で多側にあたるテーブルに同一キーのレコードが >複数あるレコードのキーを抽出すると多側にある >レコード数分重複した1側のテーブルのレコードも表示されます。 確かにおっしゃるとおり抽出条件のコードが軸側にも そうでない方にもあります。なんせ抽出条件が ずばりそのリレーションをするためのデータなのです。 下の方の補足にもありますように全てのデータに重複が見られる 訳ではないのが、余計に問題をややこしくさせています…。 >でも重複クエリを使った方が簡単ではないでしょうか。 重複クエリがインストールされておらず、それをするための CD-ROMもないので使えないのです。 やはり一つずつ削除するしかないのですね。 >VBでキーを変数に代入して同一キーのレコードを >削除する記述を作る。 というのはどういう風にやるのでしょう? よかったら教えていただきたいです。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

>そのデータはある数値を打つと全ての取引先が表示されるようになって >いるのですが、 多分これが原因でしょう これをどのようにやっておられるのかを説明しないと 推理のしようがありません

3z56u
質問者

補足

補足します。 マスターテーブルを軸にして18個のテーブルを リレーションしています。 そしてそのリレーションから選択クエリを作成し、 抽出するという方法でやっております。 特に式は組んでいません。 やはりこれだとテーブルが多すぎるんでしょうか? 前の方はこの方法で検索システムを構築していたので、 そのシステムを流用し、最新のデータテーブルと 差し替えてやったのですが…。 ちなみに選択クエリで二重表示されるのは全てではなく 総データ数の一割にも満たない数なので 余計にそうなる理由が分かりません。

関連するQ&A

  • アクセス2007 レポートで表示されないデータ

    アクセス2007を使い始めた初心者です。よろしくお願いします。 研究のための1000件ほどのデータのテーブルを元にクエリを作成しました。 そのクエリをレコードソースとしてレポートを作成しました。 ところが、表示されないデータがあります。 同じ数値のデータは表示されていません。 クエリを開いて確認すると、全てのデータが表示されていることは確認できました。 表示されないテキストボックスのプロパティを見ると「重複データの非表示」は「いいえ」になっています。  AAA XXX XXX        AAA XXX XXX  AAA XXX XXX   >>>   BBB XXX XXX  BBB XXX XXX                    どのようにしたら、全てのデータをレポートに表示させることが出来ますか。

  • Accessでのクエリーデータ表示で重複データ非表示できますか?

    Accessでのクエリー表示で重複データを非表示にする方法はありますでしょうか?

  • Accessの重複データ非表示について

    Accessのクエリで重複データを非表示にする際、「クエリプロパティ」シートで「固有の値」を「はい」に変更しても上手くいきません。 この場合、どういう原因が考えられますか? アドバイスをよろしくお願いします。

  • アクセス重複データ

    今アクセスのクエリで重複したデータを1つ残してあとは表示させないものを作成したいのですが、クエリの「抽出条件」に何をいれたらいいでしょうか。 よろしくお願いします。

  • エクセルの重複データ削除について

    B列に重複している数値が3件あります。 1件のみ消して行は詰めない方法はありませんか データツールの重複データ削除をすると行が詰まってしまいます。 1件のみ表示し空白行にしたい。

  • ACCESS2000で小数点以下を表示したい

    ACCESS2000で小数点以下を表示したい 検診データのうちある異常値の数値だけを表示したいのです. しかもその数値が例えば6.0だったら小数点1桁まで表示したいのです. クエリでIIF関数を使って空白にするか表示するかを設定すると その数値のデータ型が数値型とならずプロパティの書式を0.0としても 効きません. データ作成クエリとしてテーブルに書き出して、レポートのソースを そのテーブルにしてみたのですが、その時点での数値がテキスト型 となってしまい、その都度数値型に変更しなければならず、汎用性が ありません.テーブル作成クエリで作成するテーブルのデータ型をあらかじめ 設定する方法はないでしょうか? それとも他によい方法はないでしょうか? あいにくVBAレベルになると知識がなくさっぱりわかりません。

  • Excel2003からAccess2007のデータの取り込みについて

    Excel2003からAccess2007で作成しているデータを取り込もうとしているのですが、うまくいきません。クエリのウィザードでテーブル名等は表示されるのですが、いざデータを取り込もうとすると、”ファイル名.mdbが見つかりません”というエラーが表示されます。そもそも拡張子がmdbというファイルはないのですが、回避する方法があるのでしょうか?

  • 何度もすみません。

    以前、Accessの重複クエリから1つだけデータを取り出し残りは削除する方法を教えて頂いたのですか、この場合、重複クエリを先に作成した後、テーブル作成クエリを作成するのでしょうか?その場合、何回程度で必要なデータが取り出せるのでしょうか?テーブルの主キーはどのようにしたらよいのでしょうか?

  • Accessで重複したデータを削除したい。

    AテーブルとBテーブルがあります。AテーブルとBテーブルのフィールド名は同じですがデータはそれぞれ違います。AテーブルとBテーブルにあるデータを一つにまとめたいのですが、その際に、 「AテーブルとBテーブルの間で重複したデータがあるのでそれを削除したい。」のですが、手順としてどのような方法がスマートなのでしょうか。 (1)BテーブルをAテーブルに追加クエリで追加する。 (2)Aテーブルで重複クエリを作成し、重複しているデータを表示する。 ・・・・とここまで考えたのですが重複しているデータをどのように削除していけばいいかわかりません・・・。根本的にやり方が間違っているのでしょうか。どなたか詳しい方、いい方法を教えてください。よろしくお願い致します。

  • accessで重複データの削除について

    accessというよりSQLについてなのかと思いますが、教えていただけないでしょうか。 重複するIDがあり、1件を除いて他のデータを削除してデータを抽出したいです。 抽出条件としては、[年月日]カラムがあるため、日付が一番直近のものを残したいです。  ※こちらも重複しております。 また、[フィルタ]カラムが「2」のレコードのみを対象としたいと思っています。 accessの場合、重複クエリを用いるのかと思い、クエリウィザードから作成しましたが 一意とはなりませんでした。 SELECT テーブル1.[共通ID], テーブル1.[連番], テーブル1.[郵便番号], テーブル1.[住所], テーブル1.[担当者名], テーブル1.[年月日], テーブル1.[フィルタ] FROM テーブル1 WHERE (((テーブル1.[共通ID]) In (SELECT [共通ID] FROM [テーブル1] As Tmp GROUP BY [共通ID] HAVING Count(*)>1 )) AND ((テーブル1.[フィルタ])=2)) ORDER BY テーブル1.[共通ID], テーブル1.[年月日] DESC; distinctも使ってみましたがうまくできませんでした。 何が原因でしょうか。 申し訳ありませんがご教示いただきたくお願いいたします。