Page 589 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼条件にあったレコードの抽出 ほびっと 04/4/3(土) 17:51 ┗Re:条件にあったレコードの抽出 あかしょうびん 04/4/5(月) 23:39 ┗演算子がありません ほびっと 04/4/6(火) 10:35 ┗Re:演算子がありません あかしょうびん 04/4/6(火) 15:43 ┗うまくいきました! ほびっと 04/4/7(水) 11:19 ─────────────────────────────────────── ■題名 : 条件にあったレコードの抽出 ■名前 : ほびっと ■日付 : 04/4/3(土) 17:51 -------------------------------------------------------------------------
Access2002、Windows2000です。 次のようなテーブルがあります。 No. 名前 ランク 点数 1 A 3 10 2 A 2 12 3 A 1 11 4 B 1 17 5 B 1 14 6 C 2 13 7 C 1 11 8 D 1 10 9 D 1 15 これを次の条件で抽出したいのです。 ・同じ名前から、ひとつのレコードを抽出する ・条件として 同じ名前ならランクの大きいもの ・さらに 同じランクならNo.の小さいもの 結果として No. 名前 ランク 点数 1 A 3 10 4 B 1 17 6 C 2 13 8 D 1 10 としたいのです。 No.フィールドはユニークで連番になっています。 なかなか良い方法が思い浮かびません。 どうかアドバイスをお願いします。 |
こんばんは。 [No]というフィールドはAccessの予約語に存在して気色悪いので,IDに変えています。 select T.* from テーブル名 as T where not exists ( select * from テーブル名 as S where S.名前 = T.名前 and (S.ランク > T.ランク or S.ID < T.ID) ) 外していたらごめんなさい。 |
あかしょうびんさん、回答ありがとうございます。 試してみたのですが、うまくいきません。 テーブルは次のようにしました。 テーブル名をTAAとして、フィールド名をIDに変更しました。 ID 名前 ランク 点数 1 A 3 10 2 A 2 12 3 A 1 11 4 B 1 17 5 B 1 14 6 C 2 13 7 C 1 11 8 D 1 10 9 D 1 15 次にクエリを新規作成し、SQLビューへ次の記述をしました。 select T.* from TAA as T where not exists ( select * from TAA as S where S.名前 = T.名前 and (S.ランク > T.ランク or S.ID < T.ID) ) 実行しようとすると、以下のメッセージが出て実行できません。 クエリ式'not exists ( select * from TAA as S where S.名前 = T.名前 and (S.ランク > T.ランク or S.ID < T.ID) )'の構文エラー:演算子がありません。 どこか違っているのでしょうか。 お手数かけすみません。引き続きアドバイスお願いします。 |
スペースに全角が含まれているようなので、全て半角に変えてみてください。 |
あかしょうびんさん、ありがとうございます。 全て半角に変えてたら、うまくいきました。 本当にありがとうございました。感謝です。 |