カテゴリーで分類した上で、更に表示順を指定したい - PHPプロ!Q&A掲示板

2852

  • 0P

カテゴリーで分類した上で、更に表示順を指定したい

質問日時 / 2010年9月3日 21:10 (最終編集:9月4日 12:23)    回答数 / 2件

Questioner:  golum  このエントリーをはてなブックマークに追加 

キーワード / mysql   

MySQLのクエリに関しての質問です。

環境:PHP5、MySQL5.0

現在、ORDER BY CASEを使い「フルーツ」テーブルの表示を、以下の記述で
①リンゴ
②みかん
③なし
の順に果物の種類でカテゴリー分けして表示させています。

  1. SELECT * FROM `フルーツ`
  2. ORDER BY CASE `種類`
  3. WHEN 'リンゴ' THEN 0
  4. WHEN 'みかん' THEN 1
  5. WHEN 'なし' THEN 2 END

ここまでは予定通りなのですが、
ここからさらにそれぞれの果物を重さ順に並べたいのですがうまくゆきません。
(重さを保存した「重さ」カラムあり。型はint)

・希望の表示例
1.リンゴ(100g)
2.リンゴ(110g)
3.リンゴ(120g)
4.みかん(50g)
5.みかん(60g)
6.なし(90g)
6.なし(95g)

現在は
1.リンゴ(110g)
2.リンゴ(100g)
3.リンゴ(120g)
4.みかん(50g)
…、のように一番軽いリンゴが真ん中に表示がされています。

ASCやDESCを挿入すればできるかと思い試しましたが、文法に誤りがあるようでダメでした。
可能であれば現在の記述へ追記する形で解決したいのですが、根本的な誤りやよりよい方法があればご指摘いただけないでしょうか。

どうぞよろしくお願いいたします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01slyman仮に重さフィールドにint型で重量が入っているなら >
 ┗A01-1golumslymanさん 教えていただいた通りにしたところ、思

回答一覧

並び替え:

A01 満足
answererslyman [9月4日 15:23]

仮に重さフィールドにint型で重量が入っているなら
  1. SELECT * FROM `フルーツ`
  2. ORDER BY CASE `種類`
  3. WHEN 'リンゴ' THEN 0
  4. WHEN 'みかん' THEN 1
  5. WHEN 'なし' THEN 2 END,`重さ` ASC
でうまくいくのではないでしょうか?

この意見に回答する

ツリーへ TOPへ

A01-1
replyergolum [9月4日 16:37]

slymanさん

教えていただいた通りにしたところ、思い通りの表示になりました。
このような記述をするのですか…
大変勉強になりましたっ!

ありがとうございます!

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)