親子におすすめの新型プラネタリウムとは?

ACCESS2010で重複データの削除についてよろしくお願いします。

似た質問が多くいろいろ調べたのですが
どうしても解決できなく質問させていただきます。
【クエリA】から【クエリB】を得たいです。
(メールアドレスを元に重複を削除したい)


【クエリA】
4月1日 田中 111@yahoo.com
4月2日 鈴木 222@cmail.com
4月3日 鈴木 222@cmail.com
4月4日 石田 333@ocn.com
4月5日 石田 333@ocn.com


【クエリB】
4月1日 田中 111@yahoo.com
4月2日 鈴木 222@cmail.com
4月4日 石田 333@ocn.com




日付のデータ自体(◯月◯日)がなければ、
クエリのプロパティーシートにある”固有の値”を
”はい”にすると重複の削除できるのですが、
日付がはいるとどうしても重複の削除ができません。
日付の項目が必要なのですが、良い方法
はないものでしょうか?
日付ははじめに登録があったほうを残したいです。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

氏名、アドレスでグルーピングし、


日付を最小で取得すればよいのでは。

SELECT Min(日付),氏名,アドレス
FROM クエリA
GROUP BY 氏名,アドレス
    • good
    • 0
この回答へのお礼

一発解決できました!!
本当に本当に本当に感謝です。

お礼日時:2010/10/20 17:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSでの重複レコードの削除

ACCESSで、重複レコードを引っ張ってくるのは、重複クエリでやれましたが、逆に、重複レコード(1つのフィールド、或いは複数のフィールドに着目しての)の削除は、やれないのでしょうか?
イメージしているのは、エクセルのオートフィルタでの「重複データの削除」です。
よろしくお願い致します。

Aベストアンサー

方法を2つばかり示します:

A)選択クエリを使用する
「重複分のデータを表示させないだけ」(=削除はしない)場合は、そのテーブルをもとにしたクエリで、「固有の値」プロパティを「はい」に設定すればOKです。

但し、テーブルのデータが

  (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)・・・

の場合、クエリに表示させるフィールドを「テキスト」のみにすれば、

  (テキスト)=(aaa),(bbb),(ccc)・・

となってくれますが、IDも含めてしまうと、重複分がそのまま表示されます(=テーブルのデータと変わらない)。


B)削除クエリで削除後に、追加クエリで再追加する
※こちらは、テーブルのデータを変更するやり方です※
1)重複クエリを、メニューの「クエリ(Q)」→「テーブル作成(K)」をクリックして、テーブル作成クエリにする
 (作成テーブル名を、仮に「重複分」とします)
2)テーブル作成クエリを実行して、「重複分」テーブルを作成
3)元のテーブルの重複データを全て削除
 (=No.1の方の回答で行ったこと)
4)「重複分」テーブルのレコードを、元のテーブルに追加する追加クエリを作成
5)追加クエリを実行

この操作を実行すると、元のテーブルのデータは下のように変わっていきます:

 (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)
      ↓
 (ID,テキスト)=(1,aaa),(4,ccc)
      ↓
 (ID,テキスト)=(1,aaa),(4,ccc),(5,bbb)

なお、「ID」にオートナンバー型が設定されている場合を想定しています。
もし元のテーブルに「ID」がないなら、データの変遷は

 (テキスト)=(aaa),(bbb),(bbb),(ccc)
     ↓
 (テキスト)=(aaa),(ccc)
     ↓
 (テキスト)=(aaa),(bbb),(ccc)

となります。

方法を2つばかり示します:

A)選択クエリを使用する
「重複分のデータを表示させないだけ」(=削除はしない)場合は、そのテーブルをもとにしたクエリで、「固有の値」プロパティを「はい」に設定すればOKです。

但し、テーブルのデータが

  (ID,テキスト)=(1,aaa),(2,bbb),(3,bbb),(4,ccc)・・・

の場合、クエリに表示させるフィールドを「テキスト」のみにすれば、

  (テキスト)=(aaa),(bbb),(ccc)・・

となってくれますが、IDも含めてしまうと、重複分がそのまま表示されます(=テーブルの...続きを読む

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QACCESSのフィールドのデータを無重複に抽出する

お世話になります。
ACCESS2000を使用しています初心者です。
あるフィールドに入力されているデータを無重複に抽出したいのですが、簡単で良い方法を教えて下さい。
エクセルでの無重複抽出はできるのですが、データ数が34万件くらいあり、推測される結果は2万件くらいになります。


例)
商品
A
B
C
A
B
D
C

結果
A
B
C
D

よろしくお願いします。

Aベストアンサー

こんにちは。
まず、テーブルを基にしてクエリを作ってください。
作り方は、データベースウインドウで
「クエリ」に切り替えて、
「新規作成」ボタンを押して、「デザインビュー」を選択します。

クエリのデザイン画面が開いたら、データの入っているテーブルを追加してください。

テーブルのフィールド名が画面上半分に出ていますから、
このなかから、商品名のフィールドをダブルクリックします。
すると、画面下半分のデザイングリッドに、商品名フィールドが追加されます。

ここでツールバーの「Σ(集計)」ボタンを押してください。
さきほどのデザイングリッドに「集計:グループ化」という行が現れます。

表示-データシートビュー
で、画面を切り替えると、すべての商品名が名寄せ(グループ化)された状態で表示されているかと思います。

Q(Access)複数条件の重複データを削除する方法

アクセスの重複データ削除について質問です。

下記のようなデータがあります。(テーブル名:TEST)
ID 受付日 シリアルNO
1 2009/8/1 AAAB
2 2009/8/1 AAAA
3 2009/8/1 AAAB     ←削除
4 2009/8/1 ABAB
5 2009/8/1 AABB
6 2009/8/2 AABB
7 2009/8/2 AABC
8 2009/8/2 AABB     ←削除
9 2009/8/2 AAAA


<やりたいこと>
受付日が同じで、シリアルNOが重複しているデータがあった場合
IDの小さいデータを1件のみ残して、他はすべて削除。
※重複は2件以上の場合もある。
※シリアルNOが重複していても、受付日が違えば削除しない。

下記のように、シリアルNOの重複データを削除、まではたどりついたのですが
同一日かつ同一シリアルNOのデータを削除、という書き方がわからずに困っています。
お分かりになる方、どうぞ宜しくお願い致します!

・・・・・・・・・・・・・・・・・・・・・・
DELETE *
FROM TEST AS T1
WHERE ID <> (
Select Min(ID) From TEST As T2
Where T2.シリアルNO = T1.シリアルNO
Group By シリアルNO
Having Count(*) > 1);

アクセスの重複データ削除について質問です。

下記のようなデータがあります。(テーブル名:TEST)
ID 受付日 シリアルNO
1 2009/8/1 AAAB
2 2009/8/1 AAAA
3 2009/8/1 AAAB     ←削除
4 2009/8/1 ABAB
5 2009/8/1 AABB
6 2009/8/2 AABB
7 2009/8/2 AABC
8 2009/8/2 AABB     ←削除
9 2009/8/2 AAAA


<やりたいこと>
受付日が同じで、シリアルNOが重複しているデータがあった場合
IDの小さいデータ...続きを読む

Aベストアンサー

#1です。
Group Byもなくても問題ないですね。

DELETE *
FROM TEST AS T1
WHERE ID <> (
Select Min(ID) From TEST As T2
Where T2.受付日 = T1.受付日
And T2.シリアルNO = T1.シリアルNO);

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

Q重複クエリを使ったデータ削除

お尋ねします。

データをダブって入力してしまい、重複クエリを使ってダブったデータを抽出したのですが、ダブっているデータの片方だけを削除する方法がわかりません。

削除クエリにしてWhere条件式を書くのだろうと思いますがどう書けばいいのでしょうか?

たとえば、日付、金額、入金(または出金)の3つのデータがダブっているクエリ抽出結果においては、各フィールドのWhere条件式にどう記述すればいいのでしょうか?
教えてください。

Aベストアンサー

No.2のものです。

>「重複クエリで抽出されたデータ」は重複しているレコードだけですよね。それで>テーブルを作っても重複しているレコードだけになるのではないのですか?
>ダブっていない、という意味を教えてください。

説明不足の点がありましたね。
重複クエリーの表示には二通りあるかと思います。
1.重複データが上下に並んで表示されているもの
 (特定の項目だけ重複チェックした場合)
2.最後のフィールドに重複データ数が表示されていて見かけ上は重複していないもの

jetstreamさんの場合、データをダブって入力したということなので
たぶん2.ではないかと思います。
(いや、1.だよと言う場合はそのクエリーをグループ化します。表示-集計)

そのクエリーをコピーした後デザインで開き、クエリーを「テーブル作成クエリー」に
変え、実行(!ボタン)をクリックします。

作成したテーブルを見て下さい。重複していませんよね?
それが確認できたら最初の重複クエリーで抽出したデータを
元のテーブルから削除します。

その後新しく作ったテーブルのデータを追加クエリーで投入します。

またわからなかったら聞いて下さい。

※なかなかこういうのって文字だけじゃ伝わらないですよね・・

くれぐれも大事なデータだと思いますので
コピーなどしてから試して下さいね。

No.2のものです。

>「重複クエリで抽出されたデータ」は重複しているレコードだけですよね。それで>テーブルを作っても重複しているレコードだけになるのではないのですか?
>ダブっていない、という意味を教えてください。

説明不足の点がありましたね。
重複クエリーの表示には二通りあるかと思います。
1.重複データが上下に並んで表示されているもの
 (特定の項目だけ重複チェックした場合)
2.最後のフィールドに重複データ数が表示されていて見かけ上は重複していないもの

jetstreamさ...続きを読む

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

QAccess vbaで重複レコードの削除がしたい

 以下の様なレコード(実際は他にもデータがあります)があります。必要な部分のみを抽出しています。
 事業所名と職種名が同じものですから、整理番号が最大のものを残して、ほかは削除したいのですが、思うように重複レコードの削除ができません。ご教授ください。

 整理番号 事業所名 職種名
 20110001 ○○○○ △△△
 20120001 ○○○○ △△△
 20130001 ○○○○ △△△ ←このデータを残したいのですが・・・

よろしくお願いします。

Aベストアンサー

できると思います。

クエリをSQLビューで表示させると、

SELECT Max(テーブル1.整理番号) AS 整理番号の最大, テーブル1.事業所名, テーブル1.職種名
FROM テーブル1
GROUP BY テーブル1.事業所名, テーブル1.職種名;

このようになっているはずです。

QAccessでvlookupみたいなことはできますか。

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

Aベストアンサー

レス遅くなってすみません。
えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング