過去ログ

                                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.フィールドはユニークで連番になっています。
なかなか良い方法が思い浮かびません。
どうかアドバイスをお願いします。

 ───────────────────────────────────────  ■題名 : Re:条件にあったレコードの抽出  ■名前 : あかしょうびん  ■日付 : 04/4/5(月) 23:39  -------------------------------------------------------------------------
   こんばんは。
[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)
  )
外していたらごめんなさい。

 ───────────────────────────────────────  ■題名 : 演算子がありません  ■名前 : ほびっと  ■日付 : 04/4/6(火) 10:35  -------------------------------------------------------------------------
   あかしょうびんさん、回答ありがとうございます。
試してみたのですが、うまくいきません。
テーブルは次のようにしました。
テーブル名を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)
  )'の構文エラー:演算子がありません。

どこか違っているのでしょうか。
お手数かけすみません。引き続きアドバイスお願いします。

 ───────────────────────────────────────  ■題名 : Re:演算子がありません  ■名前 : あかしょうびん  ■日付 : 04/4/6(火) 15:43  -------------------------------------------------------------------------
   スペースに全角が含まれているようなので、全て半角に変えてみてください。

 ───────────────────────────────────────  ■題名 : うまくいきました!  ■名前 : ほびっと  ■日付 : 04/4/7(水) 11:19  -------------------------------------------------------------------------
   あかしょうびんさん、ありがとうございます。
全て半角に変えてたら、うまくいきました。
本当にありがとうございました。感謝です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 589