- ベストアンサー
PHPとMySQLを使用して複数カラムのソート方法を取得する方法について
- PHPとMySQLを使用して複数カラムのソート方法を取得する方法についてご質問します。
- レストランの開店時間がバラバラに入力されている場合に、PHPとMySQLを使用して開店時間が早い順にデータをソートする方法を教えてください。
- SELECT文で抽出されたデータを開店時間を基準にソートする方法について、質問させていただきました。PHPでソートする方法についても教えていただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
たぶんやりたいことはこんな感じ SELECT *, CASE '2010-07-07' WHEN `DATE1` THEN IF(`FLAG1`=1,`OPEN1`,NULL) WHEN `DATE2` THEN IF(`FLAG2`=1,`OPEN2`,NULL) WHEN `DATE3` THEN IF(`FLAG3`=1,`OPEN3`,NULL) ELSE NULL END AS test FROM `reserve` HAVING NOT(test is NULL) ORDER BY test ただ、今回のような横並びのデータの持ち方がSQL的ではありませんね。 きちんとしたデータ管理方法にしないと早晩破たんすると思います。
その他の回答 (1)
- magicalpass
- ベストアンサー率58% (378/648)
どういう結果を求めているのか、 うまくいかない場合はどこが求めているものと違うのか、 そういうところが明確でないと正解は分かりません。 各店の日付もバラバラだし、店ごとの毎日の開店時間もバラバラなんだから、一様に同じカラムのデータを比較しても意味無いような気がしますし。 例えば7月7日の開店時間を比較したいのなら、7月7日の開店時間が入ったカラム同士を比較しないと意味がありません。 MySQLだけで行うなら、まずDATE1~DATE3それぞれにたいし7月7日の入ったFLAG=1のレコードをSELECTし、その日の開店時間を抽出。それから開店時間に対してソートを掛けて順番に取り出すことになると思います。 あまり詳しくないのでSQLの組み合わせで1度で出来るのか、いったん別のテーブルに保存してからやらないといけないかは分かりませんが。
補足
ご回答ありがとうございます。 質問内容がわかりづらくて申し訳ありません。 精一杯、結果と求めている物を書いたつもりでしたが、どのあたりが分かりづらかったでしょうか? バラバラに入力されているのは、事情があります。 現状は、別にあるPerlで作られたcgiで運用を行っており、そのcgiが日付管理ではなく、名前に対してスケジュールが関連付けられる作りになっており、順序がバラバラのCSVに書き出されている状態です。 そのデータを利用して、サイト全体をPHPとMySQLで構築する作業中なのです。 「今日開いてるお店」「明日開いてるお店」という風に現状のデータから表示し、かつ開店時間が早い順に並んで欲しいというのが希望です。 前述のSELECT文で、 SELECT * FROM `reserve` WHERE `DATE1` = '2010-07-07' AND `FLAG1` =1 OR `DATE2` = '2010-07-07' AND `FLAG2` =1 OR `DATE3` = '2010-07-07' AND `FLAG3` =1 必要な当日のデータを抽出することはできましたが、これをソートする為には、 Q1.SELECT文にて一発でソートが出来るのか、もしくはPHP側で行わなければならないのか? Q2.SELECT文であれば、どのような記述で出来るのか? Q3.PHPであれば、データ取得してから、どのように処理をすればソートできるのか? この3点です。 Q3については漠然としすぎておりますので、処理の流れのヒントなどで十分です。 書いていただいている > MySQLだけで行うなら、まずDATE1~DATE3それぞれにたいし7月7日の入った > FLAG=1のレコードをSELECTし、その日の開店時間を抽出。 この部分は、前述のWHEREで出来ていると思います。 > それから開店時間に対してソートを掛けて順番に取り出すことになると思います。 問題はここですね。どうやれば開店時間に対してソートがかかるのか 想像がつかない状態です。 何卒よろしくお願い致します。
お礼
ご回答ありがとうございます。 こちらのSELECT文をphpMyAdmin 2.11.5.1にてSQL文として実行してみました。 すると、一発でやりたいことが実現できました! 本当にありがとうございます。 先ほど#1の方に補足で追記しましたが、おっしゃるとおりSQL的ではなく、 csv的なデータを無理矢理データベース化状態だったので、非常に悩んでおりました。 後日、データ管理方法は完全に新しくしたいと思っております。 とにかく土曜日までに仕上げないといけなかったので、非常にあせっておりました。 おかげで救われました。 ありがとうございました。