プロが教えるわが家の防犯対策術!

[T_成績]というテーブルの中に
   フィールド名:[出席番号]
   フィールド名:[得点]
というフィールドがあるとします。
まず、新規にクエリーを作ります。これはただの選択クエリーで、[T_成績]テーブルを1個だけ追加します。
クエリーグリッドのフィールド欄に[出席番号]と[得点]を追加します。
最後のフィールドに順位を求める式を入力します。式は以下の通りです。
  順位: (select count(*) from T_成績 as T_成績_1 where T_成績_1!得点>T_成績!得点)+1
こうすれば順位が求められるのですが例えば国語と数学と英語の順位の合計の低い順に順番を求めたいのですが(単純に合計の順位ならでるのですが)、順位の合計の順位というものがうまくいきません。本当に困っていますまる3日いろいろ試したのですがうまくいきません。今日も徹夜でした、よろしくお願いします。

A 回答 (5件)

>循環参照が発生していますというメッセージが出てしまうんです。



ということは、作業用のテーブルを作ったほうがいいかも。
#2で作成したクエリーを、テーブル作成クエリーにして作業用テーブルを作成して、それに対して新たに選択クエリーを作成してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。できました。スピードもはやかったです。

お礼日時:2004/01/21 09:44

>さらにその順位を求めたいのです、順位を合計したものの


>順位をもとめたいのです。よろしくお願いします。

#2で作成したクエリーを元に新たなクエリーを作成して、
satoooさんが作られた順位の計算式みたいに順位の合計の順位を求める。

で平気では?


>テーブルを正規化したほうがよさそうな気がするのは気のせい?

今問題になっているのは計算式で求めている個所ですけどどうやって正規化するの?
科目ごとの成績ってのは正規化出来ますけど、今回はほとんど関係ないかと。

この回答への補足

なんどもすみません。そのやり方には気がついたのですがなぜかできなかったのです、何か問題があるのでしょうか?

補足日時:2004/01/08 20:37
    • good
    • 0
この回答へのお礼

循環参照が発生していますというメッセージが出てしまうんです。

お礼日時:2004/01/09 11:00

話が盛り上がっている?ところに水を差すようで申し訳ありませんが、テーブルを正規化したほうがよさそうな気がするのは気のせい?

    • good
    • 0

順位をこうする。



(select count(*) from T_成績 as T_成績_国語 where T_成績_国語!国語の得点>T_成績!国語の得点)+1
+ (select count(*) from T_成績 as T_成績_数学 where T_成績_数学!数学の得点>T_成績!数学の得点)+1
+ (select count(*) from T_成績 as T_成績_英語 where T_成績_英語!英語の得点>T_成績!英語の得点)+1

T_成績に、[国語の得点]、[数学の得点]、[英語の得点]というフィールドがあるものとします。

この回答への補足

ありがとうございます。私の説明が下手なようで、順位の合計がうえのようになると思いますが、さらにその順位を求めたいのです、順位を合計したものの順位をもとめたいのです。よろしくお願いします。

補足日時:2004/01/08 15:05
    • good
    • 0

※いわれている通りに再現しました。


クエリーで順位まで出来ました。
ところが、国語とか数学とかの要素はどこに
収納されているのでしょうか?
同じT_成績の中に科目というフィールドがあるのか
複数のテーブルを比較したいのかわかりません。
そのあたりを詳しく説明してください。

この回答への補足

すみません。
T_成績に[国語点数]、[数学点数]、[英語点数]というフィールドがあります。

補足日時:2004/01/08 15:03
    • good
    • 0

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

関連するカテゴリからQ&Aを探す