• 締切済み

access・複数のテーブル・重複除外したデータ

accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。

みんなの回答

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.6

各フィールドが異なることを評価し(○ or ×)、○で抽出し、 複数テーブルがある場合は、UNION ALL もしくはUNIONで くっつけます。 SELECT [テーブルA].[フィールド1], [テーブルA].[フィールド2] FROM テーブルA WHERE (((IIf([フィールド1]<>[フィールド2],"○","×"))="○")) UNION ALL SELECT [テーブルB].[フィールド1], [テーブルB].[フィールド2] FROM テーブルB WHERE (((IIf([フィールド1]<>[フィールド2],"○","×"))="○"));

回答No.5

一つのSQLで記述するなら、 SELECT F1, F2 FROM (SELECT * FROM テーブル1 UNION ALL SELECT * FROM テーブル2 ) AS Q1 GROUP BY F1, F2 HAVING Count(*)=1;

回答No.4

補足:クエリのデザイン

回答No.3

SELECT DISTINCTROW [couple union all query].id, [couple union all query].couple_id, [couple union all query].name, [couple union all query].sex, [couple union all query].age, Count(*) AS [couple union all queryのカウント] FROM [couple union all query] GROUP BY [couple union all query].id, [couple union all query].couple_id, [couple union all query].name, [couple union all query].sex, [couple union all query].age HAVING (((Count(*))=1)); レコードのカウント数が1のみを抽出すれば・・・。

回答No.2

> おっしゃる通り「重複しているレコードはすべて出力しない」ようにしたいです。 テーブル1 F1  F2 -------------- 001 AAA 002 BBB 003 CCC 005 DDD テーブル2 F1  F2 -------------- 001 AAA 002 BBB 004 EEE 005 DDD だとしたら、下記の2件を抽出したいということでしょうか。 F1  F2 -------------- 003 CCC 004 EEE ならば、まず、下記のユニオンクエリを作成してます。 SELECT * FROM テーブル1 UNION ALL SELECT * FROM テーブル2; このクエリを保存して、このクエリを元に集計クエリを作成して、 すべてのフィールドをグループ化します。 さらに下記のフィールドを追加します。 フィールド F1 集計    カウント 表示    □ 抽出条件  =1 以上。

回答No.1

複数のテーブルのフィールド構成はすべて同じですか。 で、「フィールドの内容が全て一致するレコード」は1レコードとして表示するということですか。 そういうことなら、ユニオンクエリで可能です。ユニオンクエリはSQLで記述する必要があたますので、クエリのSQLビューで下記のように記述してください。 SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2; これで重複のない結果が出力されます。 3つのテーブルでも追加していくだけです。 SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2 UNION SELECT * FROM テーブル3; それとも重複しているレコードはすべて出力しない、ということなのかな。 もし、そうなら補足してください。

hrahrara
質問者

補足

ありがとうございます。 複数のテーブルのフィールド構成はすべて同じです。 おっしゃる通り「重複しているレコードはすべて出力しない」ようにしたいです。

関連するQ&A

  • 「主キー以外重複データ(フィールド多数)」の抽出

    タイトルのような抽出方法が必要になり、その出し方で困っています フィールドが100以上ある大きなテーブルが複数(フィールド構造は全く同じ)あり、 そのレコードを一つにまとめる為重複データを抽出し削除したいのです 条件は「主キー以外の全てのフィールドのデータが一致してる重複データ」であり、 それをどうやればAccessの機能で出せるのか悩んでいます。 最初はクエリでグループ化して出そうと思ったのですがこのフィールド数では全て グループ化はできず、 VBAで一行ずつループで処理しようにもキー以外の全フィールド一致とする検索条件のSQLのWHERE式が複雑すぎると出て処理できませんでした フィールド数が多大なテーブルで主キー以外完全一致の重複レコードをうまく抽出するにはどうすればいいのでしょうか?

  • accsessにて、複数テーブルから、重複データ抽出

    accsess2002を使っています。 accsessに関しては初心者です。 よろしくお願いいたします。 複数のテーブル(6つ)すべてに、重複しているデータ(2フィールド)の抽出方法が、わからず、困っています。 アドバイスください。 よろしくお願いいたします。

  • 2つのテーブルで重複する値のレコードを削除したい

    削除クエリ?重複クエリ?について教えてください。 テーブル1 フィールド"番号"には 1 2 3 テーブル2 フィールド"番号"には 3 4 5 があるとします。 「テーブル2と重複しているテーブル1のレコードを削除する」 (この場合「3」が重複しているのでテーブル1の3が入力されているレコードを削除) としたいのですがどいゆうSQL文を書けばいいのかわかりません。 ご教授よろしくお願いします。

  • Access2000で重複データに・・・

    Access2000の重複データの処理について質問です。 あるフィールドの重複レコードを検索し、該当するレコードの別フィールドに「●」をつけようとしています。ただ、重複する最初のレコードには「●」をつけたくないのです。 例えば  aaa ・・・ (1)  bbb  aaa ・・・ (2)  ccc  aaa ・・・ (3)  eee というフィールドだった場合、(1)には「●」をつけずに(2)以降にのみつけたいのです。 重複クエリで重複レコードを抽出して重複テーブル作成→重複テーブルと元テーブルを組み合わせて更新クエリ作成という方法でやったのですが、そうすると(1)にも「●」がついてきます。(当然ですが・・・) 何か名案があれば教えてください。 やはり、VBAを使わないと無理でしょうか・・・?

  • SQL 同じテーブル構造の複数のテーブルから重複なしでデータを取得

    テーブル名が違うだけで同じテーブル構造のテーブルが複数個あります。 仮にテーブル名を、A、B、C、Dの4個だとします。 テーブル名を格納するテーブルがあるので、そこから取得する方法でも構いません。 それらのテーブルから、フィールド名[名前]のデータを重複なしで取得したいのですが、SQL文が思いつきません。 取得するフィールドは[名前]だけです。 私の使用している環境はPostgreSQL8.1.9です。 SQL文を教えてください。よろしくお願いします。

  • 重複しないデータの抽出について

    MYSQL5.0.77で DBをつくり テーブル1のAフィールドのデータから テーブル2のAフィールドのデータ、 テーブル3のAフィールドのデータ、 テーブル3のAフィールドのデータ、 のいずれにも重複しないデータのみ 抽出したいと思っています。 どのようなSQL文を書けばよいでしょうか? じぶんでいろいろ試しましたがどうしても出来ません。 どなたかご教授願います。

    • ベストアンサー
    • MySQL
  • 重複レコードについて

    重複レコードについて ACCESS2002での話になります。 テーブルに下記レコードが複数存在します。 (例) フィールド1 フィールド2 フィールド3 愛知 田中 12 愛知 田中 11 愛知 田中 13 三重 山本 23 三重 山本 21 岐阜 鈴木 33 岐阜 鈴木 34 上記を下記の形で抽出したいと考えております。 フィールド1 フィールド2 フィールド3 愛知 田中 12 三重 山本 23 岐阜 鈴木 33 条件はフィールド1で重複がなくなるように抽出したいです。 フィールド3はどの値を抽出してもかまいません。 DESTINCTでの抽出を考えたのですが、それだと全てのカラムに DESTINCTがかかって希望の抽出が出来ませんでした。 何卒ご教授お願いいたします。

  • SQL 複数のテーブルから重複なしでデータを取得

    同じフィールド名[名前]を持つテーブルが複数個あります。 仮にテーブル名を、A、B、C、Dの4個だとします。 それらのテーブルから、フィールド名[名前]のデータを重複なしで取得したいのですが、SQL文が思いつきません。 取得するフィールドは[名前]だけです。 select distinct(名前) from A union select distinct(名前) from B union select distinct(名前) from C union select distinct(名前) from D だと、各表に同じ名前が存在する場合は結果も重複してしまい、期待する結果が得られませんでした。 環境はOracle 9iです。 SQL文を教えてください。よろしくお願いします。

  • アクセスで重複データの抽出について

    アクセスで添付画像のようなテーブルがあり、重複データの抽出を行いたいです。 抽出結果は 120 0 となるようにしたいです。 つまり、 ・フィールド1を基準に、フィールド2が全て0だった場合のみ抽出する という条件です。 どのように行えばよいか、お分かりの方お教え下さい。 よろしくお願いいたします。

  • 1つのテーブルからのデータ取得

    お世話になります。 Table1にはA,Bのフィールドがあり 例えば A=01のレコードを取得(取得するフィールドはA,B) このレコードを(1)とする。 Table1のうち、Aが(1)のBと一致する レコードを(2)とする。 Table1のうち、Aが(2)のBと一致する レコードを(3)とする。 N番目のBと一致するTable1のAがなくなるまで 上記を繰り返す。 (1),(2),(3)・・・の A,Bの値を取得するためには どういうSQL文を書けばいいでしょうか? 例:ここでA=01を設定する テーブル例と結果 Table1 A: B 01:02 取得 02:04 取得 02:05 取得 03:04 X 04:06 取得 05:10 取得 07:11 X 10:15 取得 以上お教えください。よろしくお願いします。