Access重複クエリを用いて、以下のような結果を出したいのですが
可能でしょうか?
ご指導の程よろしくお願いいたします。
(例)
<テーブル>
ID 判定 日本語 英語
1 o テスト test
2 o 赤 red
3 x 油 apple
4 o 愛 love
5 x りんご apple
6 o 日本 Japan
7 o テスト test
8 o りんご apple
9 x 赤 blue
10 o テスト test
<クエリ結果(1)>
・日本語重複、かつ、英語重複のレコードを、重複単位に並べ替えて抽出したい。
※ID「3」の英語は重複しているが、日本語が重複していないので抽出しない。
※ID「9」の日本語は重複しているが、英語が重複していないので抽出しない。
ID 判定 日本語 英語
1 o テスト test
7 o テスト test
10 o テスト test
5 x りんご apple
8 o りんご apple
<クエリ結果(2)>
・クエリ結果(1)に加えて、判定が「o」、「x」どちらも含まれるレコードだけを抽出したい
※ID「1、7、10」は、判定がすべて「o」の為、抽出しない。
ID 判定 日本語 英語
5 x りんご apple
8 o りんご apple
以上ご教授の程よろしくお願いいたします。
#1です
訂正です。
以下の様なデータがあった場合は想定していませんでした。
ID 判定 日本語 英語
・・・・
11 o テスト tests
12 o テスト tests
1)での ORDER BY 日本語, ID は、ORDER BY 日本語, 英語, ID としてください。
2)での 日本語=Q2.日本語 の後に、 AND 英語=Q2.英語 を追加してください。
重複クエリを使った例になっていなかったので、
1)は、
SELECT Q1.ID, Q1.判定, Q1.日本語, Q1.英語 FROM TE AS Q1 INNER JOIN
(SELECT 日本語, 英語 FROM TE GROUP BY 日本語, 英語 HAVING Count(*)>1) AS Q2
ON (Q1.日本語=Q2.日本語) AND (Q1.英語=Q2.英語)
ORDER BY Q1.日本語, Q1.英語, Q1.ID;
2)は、1)を「Q_TE_1」名で保存したとして(#1と変わりありませんが)
SELECT ID, 判定, 日本語, 英語 FROM Q_TE_1 AS Q3
WHERE EXISTS (SELECT 1 FROM Q_TE_1 WHERE 判定<>Q3.判定 AND 日本語=Q3.日本語 AND 英語=Q3.英語);
なお、これらは更新できない表示となります。
#1は、更新可能です。
提示された元のテーブル名を「TE」と仮定します。
1)以下をクエリのSQLビューに記述します。
SELECT ID, 判定, 日本語, 英語 FROM TE AS Q1
WHERE EXISTS (SELECT 1 FROM TE WHERE ID<>Q1.ID AND 日本語=Q1.日本語 AND 英語=Q1.英語)
ORDER BY 日本語, ID;
2)1)のクエリを 「Q_TE」名で保存したとします。
SELECT ID, 判定, 日本語, 英語 FROM Q_TE AS Q2
WHERE EXISTS (SELECT 1 FROM Q_TE WHERE 判定<>Q2.判定 AND 日本語=Q2.日本語);
※ データ量が多くなった場合の処理性能について、わかりません。
お礼
ありがとうございます。 無事できるようになりました。 重ねてお礼申し上げます。