最速怪談選手権

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


以上ご教授の程よろしくお願いいたします。

A 回答 (2件)

#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は、更新可能です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

無事できるようになりました。

重ねてお礼申し上げます。

お礼日時:2012/10/01 19:02

提示された元のテーブル名を「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.日本語);


※ データ量が多くなった場合の処理性能について、わかりません。
    • good
    • 0

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