プロが教える店舗&オフィスのセキュリティ対策術

図面管理のデータベースをつくっています。
連結したフィールドでグループ化し、他のフィールドの最大値のレコード全体を抽出したいのですが
どのようにしたらいいのでしょうか?
いろいろ調べたのですがなかなかよい結果が出ません。
お知恵をおかしください。よろしくお願いします。
mysqlバージョン:5.0.45


テーブル:a(図面管理)
a_id(id)
a1(図番)
a2(種類用紙サイズ)
a3(枝番)
a4(図面名)

a_id a1 a2 a3 a4
1   1 3P 0 aaaa
2   2 3P 0 bbbb
3   2 3P 1 bbbb
4   1 4P 0 cccc
5   1 4P 1 cccc
6   1 4P 1 cccc

このテーブルのa1とa2を連結します。(連結フィールド:ren)

a_id a1 a2 a3 a4  ren
1   1 3P 0 aaaa 13P
2   2 3P 0 bbbb 23P
3   2 3P 1 bbbb 23P
4   1 4P 0 cccc 14P
5   1 4P 1 cccc 14P
6   1 4P 2 cccc 14P

連結したもの(ren)をグループ化しますこのとき、枝番の値が高いレコードだけ抽出します。
a_id a1 a2 a3 a4  ren
1   1 3P 0 aaaa 13P
3   2 3P 1 bbbb 23P
6   1 4P 2 cccc 14P

この最終的な結果を出す方法をお教えください。
おねがいします。

A 回答 (1件)

連結する必要はないのでは?



select *
from a
where (a1,a2,a3) in (
select a1,a2,max(a3) as max_a3
from a
group by a1,a2
)

ちなみに最初のテーブルaのa_idの枝番がまちがっていますよ
    • good
    • 0
この回答へのお礼

yambejpさん
先日のPHPに引き続きご回答ありがとうございました。
yambejpさんのご指摘どおり連結は必要ないですね。
私は連結してからのことばかり考えていたのでうまくいかなかったのかもしれません。
これでまた次のステップに進めます。
本当にありがとうございました。

>ちなみに最初のテーブルaのa_idの枝番がまちがっていますよ
ご指摘のとおり一番最後の枝番が違っていました。お恥ずかしい限りです。
■正確には
a_id a1 a2 a3 a4
6   1 4P 2 cccc

お礼日時:2010/04/16 13:28

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