みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

グループ化したSQLの書き方について

XP&MySQL5&PHP5

ID,PASSWORD,name,tokutenn,zyukennbi,syozoku,bangou
というフィールド(すべてテキスト型)を持つテーブル(result)があります。
(ID,PASSWORD,名前、得点、受験日、所属、社員番号)
全個人が最高得点を記録したレコードだけはSQLで書けます。
select ID, name ,max(result.tokuten) as maxtokuten from result group by ID, name
ただ、最高得点を出したと同じレコードのそれ以外のフィールド(zyukennbi,syozoku,bangou)
を表示させるSQLがわかりません。

何方か、ご存知の方おられましたら、ご教授ください。
よろしくお願いいたします。

投稿日時 - 2008-08-04 16:50:16

QNo.4227415

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

テーブルの得点がテキスト型で、そのSQL文でほんとに取れますか?
テキスト型だと、正確なMAX値が取れないはずなんですが・・・
試しに得点が「99」と「100」のデータで実行してもらえますか?
テキスト型だと「99」のほうを取ってきてしまうはずです。



本題ですが、以下のSQL文で取ってこれると思います。

select a.tokuten, a.zyukennbi, a.syozoku, a.bangou
from result as a,
(select ID, name ,max(result.tokuten) as maxtokuten from result group by ID, name) as b
where a.ID = b.ID
and a.name = b.name
and a.tokuten = b.maxtokuten

ようは、質問文のSQLで取ってきたデータをキーに、もう一回検索をかけて取りに行くというだけです。

ただ、そのテーブルだとキー項目が予測つかないので、合ってるかどうかはわかりませんが(^-^;

投稿日時 - 2008-08-04 18:00:16

お礼

>テーブルの得点がテキスト型で、そのSQL文でほんとに取れますか?
>テキスト型だと、正確なMAX値が取れないはずなんですが・・・
>試しに得点が「99」と「100」のデータで実行してもらえますか?
>テキスト型だと「99」のほうを取ってきてしまうはずです。
はい。その通りでした。危うく迷路に入るところでした。
ありがとうございました。

投稿日時 - 2008-08-05 08:11:57

あなたにオススメの質問