[前][次][番号順一覧][スレッド一覧]

mysql:14542

From: "F.Y" <"F.Y" <fumi_sby@xxxxxxxxxx>>
Date: Thu, 15 May 2008 23:18:41 +0900 (JST)
Subject: [mysql 14542] Re: PHP の usort() のようなことをしたい

ヒント:
select field('F', 'D', 'E', 'F', 'G', 'B', 'A', 'Z');
ごくふつーに
order by field(cat_1st, 'P', 'A', 'N', 'C', 'NO')
Oracleだとdecode、初歩中の初歩でないかい?

--- Akikazu Takenaka <a.p.takenaka@xxxxxxxxxx> wrote:

> 神奈川の竹中と申します。
> お世話になります。
> 
> 下記の環境を利用しております。
> OS: CentOS 4.5
> PHP: 4.3.9
> MySQL: 4.1.20
> 
> テーブルの内容を、設定した順番でソートしたいと考えております。
> 表題のとおり、PHPの usort() と同じようなことです。
> 
> 下記のようなテーブルを仮定します。
> (必要な部分だけ抽出しています)
> 
> CREATE TABLE `example` (
> `cat_1st` VARCHAR(10) NOT NULL DEFAULT 'NO',
> `cat_2nd` int(11) DEFAULT NULL
> ) ENGINE=InnoDB DEFAULT CHARSET=latin1
> 
> cat_1st には、1文字のアルファベットか 'NO' のいずれかが入り、
> cat_2nd には、1〜2桁の数値が入ります。
> 
> ここで、 cat_1st をキーとしてソートしたいのですが、
> 単純に ASC や DESC でソートするのではなく、
> 特定の順番で並べたいと考えています。
> 
> 例: 'P' → 'A' → 'N' → 'C' → ... → 'NO'
> 
> このようなソートを、MySQLだけで実現できるのでしょうか?
> 
> 上記のように並べたいのは、 cat_1st のそれぞれの値の重要性や、
> 使用頻度などによるものです。
> ただ、このソートは必須ではなく、「あまり手をかけずにできれば」という
程度なので、
> このためにカラムを1つ(重要性などを表す数値など)増やす、
> などは考えておりません。
> 
> もし何か有用な方法をご存知の方がいらっしゃいましたら、
> ご教授頂ければ幸いです。
> もちろん、「PHPでやるほうが速い」などのアドバイスでも構いません。
> 
> 以上、恐縮ですが、よろしくお願い致します。
> 
> -- 
> 竹中 彰一 (Akikazu Takenaka)
> a.p.takenaka@xxxxxxxxxx
> ------------------------------------------------------------
> equal1
> http://www.equal1.net/
> 
> 


--------------------------------------
GANBARE! NIPPON! Win your ticket to Olympic Games 2008.
http://pr.mail.yahoo.co.jp/ganbare-nippon/

[前][次][番号順一覧][スレッド一覧]

     14538 2008-05-15 19:16 ["Akikazu Takenaka" <] PHPの usort()  のようなことをしたい     
     14539 2008-05-15 19:40 ┣[HIRATSUKA Sadao <hir]                                       
     14540 2008-05-15 20:03 ┣[chuuken kenkou <ken_]                                       
->   14542 2008-05-15 23:18 ┗["F.Y" <fumi_sby@xxxx]                                       
     14547 2008-05-16 10:46  ┗["Akikazu Takenaka" <]