アプリ版:「スタンプのみでお礼する」機能のリリースについて

バージョン管理データベースを作ろうとしています。

Anhttpd 1.42p
Anhttpd 1.42o
Anhttpd 1.42n
一太郎 10
一太郎 9

最新バージョンのみを絞り込みたいと思い、GROUP BYで抽出を試みました。
バージョンは末尾に英字を含むので文字列型にするしかなく、そうすると最大値のみ抽出とすると10より9が大きいということになってしまいます。
何かよい案はないでしょうか。

A 回答 (3件)

バージョンの数値で並べたいのか、配布開始日順で並べたいのか?


まあ、version数なんて、1,2,3がいつのまにか2008だの2009だのになってたりするから、日付順で最新データがほしいというなら、各versionの配布開始日のカラムを作れば、日付け順に並べるのは簡単。
    • good
    • 0

>バージョンは末尾に英字を含むので文字列型にするしかなく



製品名 varchar(n)
バージョン・リビジョン decなど
版識別子 char(1)

とかに分け、検索時には必要ならconcat関数でくっつけるといった方法が扱いやすいのでは?

どうしてもvarcharだけで管理したいというなら、

order by length(バージョン番号) desc,バージョン番号 desc

といった凝った方法もありますけど、これだとインデクスを使ってくれないでしょうね。

いずれにしても、列構成、データ型、データの内容(形式)などが具体的でないので、具体的なアドバイスは難しいというか、何かアドバイスすれば、「実は、xxでyyできない」といった情報の小出しのような展開になるように思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
バージョン番号の整数桁は現在2桁のものがあるのがネックになっているので、1桁のものの先頭にゼロパディングして対処をしているところです。
末尾英字を分割する方法もよさそうなので、また詰まったら検討してみます。

お礼日時:2009/04/17 08:49

バージョン管理という事は、今後も新しいバージョンが出た際にデータベースを更新する作業が伴ってきますよね?


もしそうであれば、「ID」のカラムを設けてAUTO_INCREMENTでIDを自動で振るようにし、
古いバージョンの順にデータベースへ登録していって、IDによって最新版を抽出するようにしてはどうでしょう?

そうすれば、今後の更新でどんなバージョン名が出ようとも対応できると思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
IDのフィールドももちろん用意してあるのですが、バグ回収などで2.00リリース以降に1.37Bとかのバージョンが出たりもするので、必ずしも新しいIDが最新ではないことがありえます。

お礼日時:2009/04/16 10:58

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