Accessでクエリに規則性の無い重複データが
- Accessでクエリに規則性の無い重複データが発生しました。クエリの作り方が間違っているのか、重複データを削除する方法がわかりません。
- Accessのクエリで重複データが発生してしまいました。クエリの作り方を見直す必要があります。
- Accessのクエリで重複データが生じています。クエリの修正方法やデータの管理方法をご教示いただけませんか。
- ベストアンサー
Accessでクエリに規則性の無い重複データが
Accessに二つのテーブルを作りました。 Tユーザー情報 ・ユーザーID ・郵便番号 ・性別 T都道府県 ・都道府県名 ・郵便 Tユーザー情報には都道府県のデータがないため、 T都道府県とひもづけたいのです。 続いてクエリを作成しました。 ・ユーザーID(Tユーザー情報) ・性別(Tユーザー情報) ・郵便番号(Tユーザー情報)→リレーションシップ:郵便(T都道府県) ※結合プロパティで「両方のテーブルの結合フィールドが同じ行だけを含める。」 ※無効な〒番号のユーザーは省きたいため ・都道府県(T都道府県) 結果、Tユーザー情報の件数よりも、クエリのレコードの件数が多くなってしまいました。 ユーザーIDを見ると、全く同じレコードが数行混ざっていました。 重複レコードはそれぞれ件数が違い、規則性も見つかりません。 全体で10万件のうち8千件くらいの重複データができてしまいます。 googleで調べると、もともと重複データのあるレコードを削除する方法は あるようですが難しく、そもそも重複データを作らない方法が見つかりません。 クエリの作り方が間違っているのでしょうか… どうぞよろしくお願い致します。
- ikachan39
- お礼率72% (24/33)
- オフィス系ソフト
- 回答数7
- ありがとう数5
- みんなの回答 (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ユーザー情報.郵便番号;
関連するQ&A
- Accessのクエリについて
ふたつのテーブルから抽出したユーザー名が重複してしまいました。それを一つだけに絞ってユーザーの件数の合計を出したいのですが、方法はありますか? 私がとった方法はクエリプロパティのレコードを「はい」にしましたがうまくいきませんでした。 それでピボットテーブルで集計をしましたが、やはりテーブルデータシートで確認できたら便利に思います。 どなたかお知恵をお貸しください。 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- 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も使ってみましたがうまくできませんでした。 何が原因でしょうか。 申し訳ありませんがご教示いただきたくお願いいたします。
- 締切済み
- その他(データベース)
- アクセスの重複クエリ
二つのテーブルやクエリで重複するデータを 抽出するのは「重複クエリ」でいいのでしょうか? それとも「重複クエリ」は一つのテーブルの中の重複するデータを 抽出するものなのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Access2000で重複データに・・・
Access2000の重複データの処理について質問です。 あるフィールドの重複レコードを検索し、該当するレコードの別フィールドに「●」をつけようとしています。ただ、重複する最初のレコードには「●」をつけたくないのです。 例えば aaa ・・・ (1) bbb aaa ・・・ (2) ccc aaa ・・・ (3) eee というフィールドだった場合、(1)には「●」をつけずに(2)以降にのみつけたいのです。 重複クエリで重複レコードを抽出して重複テーブル作成→重複テーブルと元テーブルを組み合わせて更新クエリ作成という方法でやったのですが、そうすると(1)にも「●」がついてきます。(当然ですが・・・) 何か名案があれば教えてください。 やはり、VBAを使わないと無理でしょうか・・・?
- ベストアンサー
- オフィス系ソフト
- Access2003:重複なしでデータを取り出す方法を教えてください
住所テーブルと注文テーブルを結合させ、ダブらない抽出をしたいと思っています。 (最終的には「最近の注文した顧客の住所ラベル」を作りたいのです) 住所テーブルは ID(オートナンバー型)|*顧客番号(テキスト型)|住所(テキスト型)|郵便番号(テキスト型) *は主キー 注文テーブルは *注文ID(オートナンバー型)|顧客番号(テキスト型)|注文日(Date型)|商品ID(テキスト型)|注文数(Int型) *は主キー 注文テーブルの注文日を2007/1/1以降とクエリをかけると、同じ顧客番号が出ます。 つまり、注文日を2007/1/1以降とした住所テーブルと顧客テーブルを結合してクエリをかけると、注文テーブルで重複した顧客のデータも出てしまいます。 これを同じ顧客番号が重複しないように抽出したいのです。 他のQAも拝見しましたが、イマイチ行いたい事柄にヒットしていないと思い、 更には当方がそれらを理解する域まで及ばないと思いまして、新しい質問としてあげさせていただきました。 どなた様か、お分かりの方がおいででしたらご教示くださいますよう、お願い申し上げます。
- 締切済み
- オフィス系ソフト
- ACCESS 重複データ削除の順番について
追加クエリを使って重複データを削除する時に、削除されるデータについて質問です。 重複レコードを含むテーブルの構造のコピーを作成し、重複レコードを含むすべてのフィールドの主キーを作成して、元のテーブルから新しいテーブルへの追加クエリを実行して、重複レコードを一括削除をしています。 [操作についての参考URL] http://support.microsoft.com/kb/879852/ja =========================================== (テーブル) [ID] [クラス] [名前] [時間] 1 A ああ 11:00 ←重複 2 B 鈴木 12:00 3 C アア 13:00 ←重複 4 A ああ 14:00 ←重複 5 B 森 15:00 6 C アア 16:00 ←重複 7 B 青山 17:00 8 C アア 18:00 ←重複 9 A ああ 19:00 ←重複 =========================================== 上記のようなテーブルで「クラス」と「名前」の2つのフィールドを主キーにした場合、 「A」の「ああ」さんと、「C」の「アア」さんが各3件ずつ重複しています。 しかし、「ID」と「時間」はそれぞれ違っています。 このような場合に、削除されないデータと削除されるデータの違いは何なのでしょうか? ACCESSの仕様でとか、レコードの若い番号順で削除されるとか、明確なルールが あれば教えていただけると幸いでございます。 御手数お掛け致しますが、何卒よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- アクセスのクエリで重複しているデータについて
テーブルの一部分のフィールドを使ってクエリAを作成しています。 [クエリA] 番号 氏名 郵便番号 住所 電話番号 子供 1 田中守 111-0000 東京都・・・ 000-0000 章 2 佐藤健 122-0001 神奈川県・・・ 001-0001 花子 3 田中守 111-0000 東京都・・・ 000-0000 陽子 これを重複しているデータを省くのですが、[子供]の名前はすべて取り出したいと思っています。 どの様にすれば良いか教えて頂けないでしょうか? 氏名 郵便番号 住所 電話番号 子供 田中守 111-0000 東京都・・・ 000-0000 章,陽子 佐藤健 122-0001 神奈川県・・・ 001-0001 花子 最終的には、宛名印刷を行った時に、子供の名前も連名で表示したいと思っての事です。 現在、クエリで行っておりますが、クエリでなくても構いません。 足りない情報はすぐに補足致しますので、お手数ですが、どうぞよろしくお願い致します。 Access2003を使用しております。
- ベストアンサー
- オフィス系ソフト
- ACCESSのクエリ機能で重複したデータを除く方法
accessの初心者です。 どなたかお詳しい方是非よろしくお願い致します。 accessのクエリ機能をつかい、レコードを結合したいのですが、重複したレコードを省く方法を教えてください m(_ _)m 例えば、下記のようなAとBというテーブルがあり、Aには商品番号と商品名、Bには商品番号と倉庫名が入っているとします。 テーブルA(※商品番号の重複なし) 商品番号 商品名 001 商品A 002 商品B 003 商品C テーブルB(※商品番号の重複あり) 商品番号 倉庫名 001 倉庫A 001 倉庫B 001 倉庫C 002 倉庫B 002 倉庫C 003 倉庫A 003 倉庫B 商品番号でクエリをかけて、テーブルAのレコード数と同じレコードの商品番号、商品名、倉庫名と表示させたいのです。 (倉庫名はテーブルBのレコードの中のいずれかだけでOKです。) 例えば、下記のようなクエリ結果を表示させたいです。 商品番号 商品名 倉庫名 001 商品A 倉庫A 002 商品B 倉庫B 003 商品C 倉庫A 説明がうまくできず申し訳ありませんが、どなたかお詳しい方よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Accessのクエリについて質問です。
Accessのクエリについて質問です。 T_元データ、T_書換データという2つのテーブルがあります。 それぞれのテーブルは顧客番号、金額1、金額2、金額3というフィールドがあります。 テーブル生成クエリで、以下のような新規テーブルを生成したいと思います。 ---------------------------------------------------------------- 【1】顧客番号が一致した場合、T_元データの金額1、金額2、金額3を T_書換データの金額1、金額2、金額3に書き換えたい。 【2】顧客番号一致しない場合、T_元データの金額1、金額2、金額3を をのまま表示させたい。 ---------------------------------------------------------------- 【1】については正常に書き換えができていますが、 顧客番号が一致しない場合は、金額1、金額2、金額3がブランクになってしまいます。 【2】のような動きにするにはどうしたらよいのでしょうか? ちなみに、結合プロパティは以下のように設定しています。 左のテーブル名:T_元データ 右のテーブル名:T_書換データ 左の列見出し:顧客番号 右の列見出し:顧客番号 2を選択 ('T_元データ'の全レコードと'T_書換データ'の同じ結合フィールドのレコードだけを含め る。) よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- Accessの重複クエリで最小以外を削除したい
あるテーブルに ID、JANコード、価格、その他いくつかのフィールドがあります。 レコードの中から、JANが重複しているデータで、価格が一番小さいものを残して残りを削除したいのですが、どうしたら良いでしょうか? 例) ID JAN 価格 111 1234567 100 ← このレコード 123 1234567 200 124 1234567 500 234 8765431 700 237 8765431 600 ← このレコード 354 8765431 800 こんな感じで、ID100と237だけを生かして他を削除したいのです。 重複クエリで集計にして、最小を選ぶとIDもグループ化されてしまって、 うまくいきません。 環境はWinXP Pro+Access2007です。 どなたか、ご教授のほど、よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
>"T都道府県"のデータに重複がありませんか? >"T都道府県"の主キーは"郵便"ですよね >これに重複を認めていて 全く同じレコードが複数存在しているのでは? >(または同じ郵便番号で都道府県が異なるレコードが存在するとか?) "T都道府県"で郵便番号を主キーにしようとしたところエラーになってしまいました。 日本郵便のサイトから最新データをダウンロードして使っているのですが、 そのデータの重複レコードがちょうど作成したクエリだけ同じ数だけあることがわかりました。 予想外の原因でした…気付かせていただきまして本当にありがとうございます!!
補足
ご丁寧なご回答に感謝しきりです。。 >>重複レコードはそれぞれ件数が違い >とはどういうことですか? >クエリを実行するたびに違うということでしょうか? いえ、毎回同じデータが重複します。 例えばAさんが3件、Bさんが12件、というように規則性がありません。