- 締切済み
access・複数のテーブル・重複除外したデータ
accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- naoto0216
- ベストアンサー率46% (183/391)
各フィールドが異なることを評価し(○ 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],"○","×"))="○"));
- hatena1989
- ベストアンサー率87% (378/433)
一つのSQLで記述するなら、 SELECT F1, F2 FROM (SELECT * FROM テーブル1 UNION ALL SELECT * FROM テーブル2 ) AS Q1 GROUP BY F1, F2 HAVING Count(*)=1;
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
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のみを抽出すれば・・・。
- hatena1989
- ベストアンサー率87% (378/433)
> おっしゃる通り「重複しているレコードはすべて出力しない」ようにしたいです。 テーブル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 以上。
- hatena1989
- ベストアンサー率87% (378/433)
複数のテーブルのフィールド構成はすべて同じですか。 で、「フィールドの内容が全て一致するレコード」は1レコードとして表示するということですか。 そういうことなら、ユニオンクエリで可能です。ユニオンクエリはSQLで記述する必要があたますので、クエリのSQLビューで下記のように記述してください。 SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2; これで重複のない結果が出力されます。 3つのテーブルでも追加していくだけです。 SELECT * FROM テーブル1 UNION SELECT * FROM テーブル2 UNION SELECT * FROM テーブル3; それとも重複しているレコードはすべて出力しない、ということなのかな。 もし、そうなら補足してください。
補足
ありがとうございます。 複数のテーブルのフィールド構成はすべて同じです。 おっしゃる通り「重複しているレコードはすべて出力しない」ようにしたいです。