- ベストアンサー
Accessでクエリに規則性の無い重複データが
- Accessでクエリに規則性の無い重複データが発生しました。クエリの作り方が間違っているのか、重複データを削除する方法がわかりません。
- Accessのクエリで重複データが発生してしまいました。クエリの作り方を見直す必要があります。
- Accessのクエリで重複データが生じています。クエリの修正方法やデータの管理方法をご教示いただけませんか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
最初の質問の >・郵便番号(Tユーザー情報)→リレーションシップ:郵便(T都道府県) >※結合プロパティで「両方のテーブルの結合フィールドが同じ行だけを含める。」 >※無効な〒番号のユーザーは省きたいため の記述と ANo.1の補足のSQL文の 「 FROM Q都道府県データ RIGHT JOIN Tユーザー情報 ON Q都道府県データ.郵便 = Tユーザー情報.郵便番号 」 の部分は矛盾しますが それに関していかがでしょうか? 私は >※無効な〒番号のユーザーは省きたいため ならば >※結合プロパティで「両方のテーブルの結合フィールドが同じ行だけを含める。」 (すなわち「 RIGHT JOIN 」ではなく「 INNER JOIN 」) が正しいと思います "T都道府県"のデータに重複がありませんか? "T都道府県"の主キーは"郵便"ですよね これに重複を認めていて 全く同じレコードが複数存在しているのでは? (または同じ郵便番号で都道府県が異なるレコードが存在するとか?) あと気になったのですが >重複レコードはそれぞれ件数が違い とはどういうことですか? クエリを実行するたびに違うということでしょうか?
その他の回答 (6)
- piroin654
- ベストアンサー率75% (692/917)
No4の >「Q都道府県データ」は以下のようにします。 は同じことだったようです。少し構造が違いますが。 したがって、 「Tユーザー情報の全レコードとQ都道府県データの同じ 結合フィールドのレコードだけを含める」にチェック。 だけだと思います。
補足
ご回答ありがとうございます。 >「Tユーザー情報の全レコードとQ都道府県データの同じ >結合フィールドのレコードだけを含める」にチェック。 に変更したところ、重複レコードがかなり減りました。 8000件→1500件とまだ残っておりますが…
- piroin654
- ベストアンサー率75% (692/917)
No4の捕捉 >emikan1982さんへの補足のクエリにおいて、 というのは、No1で補足されたクエリのことです。
- piroin654
- ベストアンサー率75% (692/917)
「Q都道府県データ」は以下のようにします。 SELECT (Left([郵便番号],3) & "-" & Right([郵便番号],4)) AS 郵便, T都道府県データ.都道府県 FROM T都道府県データ ORDER BY (Left([郵便番号],3) & "-" & Right([郵便番号],4)); emikan1982さんへの補足のクエリにおいて、 「Tユーザー情報の全レコードとQ都道府県データの同じ 結合フィールドのレコードだけを含める」にチェック。
お礼
Q都道府県データの作り方は大変参考になりました。ありがとうございました。
- emikan1982
- ベストアンサー率14% (4/28)
SQLの提示ありがとうございます。 掲載されている中で、「Q都道府県データ」というものが あるのですが、クエリで「Q都道府県データ」があるのではないでしょうか。 原因として考えられるのは、その部分だと思います。 単純に質問に対しての答えはpiroin654さんのSQLを実行する事で 解決できると思います。 もし良かったら、「Q都道府県データ」クエリの詳細を教えてください。
補足
何度もご回答いただきありがとうございます。 お礼を申し上げるのが遅くなり申し訳ございません。 piroin654さんのご回答にも補足しましたが、郵便番号の表記が違うため「Q都道府県データ」を作成しました。 SQL文は下記に貼り付けます。 SELECT Left([郵便番号],3) & "-" & Right([郵便番号],4) AS 郵便, T都道府県データ.都道府県 FROM T都道府県データ ORDER BY Left([郵便番号],3) & "-" & Right([郵便番号],4);
- piroin654
- ベストアンサー率75% (692/917)
以下のようなこと? SELECT T都道府県.都道府県名, Tユーザー情報.郵便番号, Tユーザー情報.ユーザーID, Tユーザー情報.性別 FROM Tユーザー情報 RIGHT JOIN T都道府県 ON Tユーザー情報.郵便番号 = T都道府県.郵便; >結合プロパティで「両方のテーブルの結合フィールドが同じ行だけを含める。」 を 「T都道府県の全レコード・・・」 にチェック。
補足
ご回答ありがとうございます。 説明が足りず申し訳ございません。 T都道府県の郵便番号は「0123456」、 Tユーザー情報の郵便番号は「012-3456」という表記なのです。 T都道府県の郵便番号の表示を変えるためにQ都道府県データを作りました。 そのため、ご回答いただいた内容でクエリを作るとエラーになってしまいます。
- emikan1982
- ベストアンサー率14% (4/28)
はじめまして。 まずはSQL文を提示して頂けないでしょうか。
補足
Accessに詳しくなくお恥ずかしいのですが… SQL文とは下記のものでよろしいでしょうか? SELECT Tユーザー情報.郵便番号, Tユーザー情報.性別, Tユーザー情報.誕生日, DateDiff("yyyy",[誕生日],Date())-(Format([誕生日],"mmdd")<Format(Date(),"mmdd")) AS 年齢, ([年齢]¥10)*10 & "代" AS 年代, Q都道府県データ.都道府県, Tユーザー情報.収入, Tユーザー情報.ユーザID FROM Q都道府県データ RIGHT JOIN Tユーザー情報 ON Q都道府県データ.郵便 = Tユーザー情報.郵便番号 ORDER BY Tユーザー情報.郵便番号;
お礼
>"T都道府県"のデータに重複がありませんか? >"T都道府県"の主キーは"郵便"ですよね >これに重複を認めていて 全く同じレコードが複数存在しているのでは? >(または同じ郵便番号で都道府県が異なるレコードが存在するとか?) "T都道府県"で郵便番号を主キーにしようとしたところエラーになってしまいました。 日本郵便のサイトから最新データをダウンロードして使っているのですが、 そのデータの重複レコードがちょうど作成したクエリだけ同じ数だけあることがわかりました。 予想外の原因でした…気付かせていただきまして本当にありがとうございます!!
補足
ご丁寧なご回答に感謝しきりです。。 >>重複レコードはそれぞれ件数が違い >とはどういうことですか? >クエリを実行するたびに違うということでしょうか? いえ、毎回同じデータが重複します。 例えばAさんが3件、Bさんが12件、というように規則性がありません。