• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql+php 日付別料金データで最安値の取得)

mysql+php 日付別料金データで最安値の取得

このQ&Aのポイント
  • phpで、mysqlに日付毎料金の月の最安値を求める方法を知りたい
  • mysqlのデータベースには、日付、料金などのフィールドがあり、それを利用して月の最安値を求めたい
  • バージョンはphp2.??だが、カテゴリーがmysqlである場合は再度投稿する

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

whileの使い方がへんですね。 以下のようにしてみると少しはわかりやすくなります。 while($rec_fare = mysql_fetch_array( $result_fare, MYSQL_ASSOC )) $rec[$rec_fare['month']] = $rec_fare['tariff']; } print_r($rec);

takotan2
質問者

お礼

yambejpさん ご連絡遅くなり申し訳ございませんでした。 10月、11月と別々に欲しいページがあったので、下記で対応できました。 yambejpさんのコードだと配列なんでしょうか。。勉強不足ですみません。。。もうちょっと見てみます。でも本当にありがとうございました。 $sql_fare = "select month,code,min(tariff) as tariff from date left join ryoukin on '200612' between left(from,6) and left(to,6) where code = '$code' group by '200612'"; $resulfare = mysql_query($sql_fare); while($rec_fare = mysql_fetch_array( $resulfare, MYSQL_ASSOC )) { foreach ($rec_fare as $k=>$v) { $rec_fare[$k] = mb_converencoding($v,'UTF-8','EUC-JP'); } $tariff = $rec_fare[tariff]; }

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>無事出来たのですが、データが 300300300・・・のように表示され、 >10月300、11月300・・・のような表示方法が分かりません。。。 うーん。どのような処理をしたら300300300・・・のように表示 されるのかを示してもらわないとなんとも答えようがありませんね。 PHPでwhileでまわしてprintしたのでしょうか? ご自身なりのソースで結構ですので例示してください。

takotan2
質問者

補足

yambejpさま 遅くなり申し訳ございませんでした。自分なりにやってみたのですが、どうも埒があきません。。 下記はyambejpさんのを素直にやってみたものです。 例になかった t_code ='AAT1AP286BCAN' を追加しています。 $sql_fare = "select month,min(tariff) as tariff from date left join ryoukin on month between left(from,6) and left(to,6) where t_code ='AAT1AP286BCAN' group by month"; $result_fare = mysql_query($sql_fare); while($rec_fare = mysql_fetch_array( $result_fare, MYSQL_ASSOC )) { foreach ($rec_fare as $k=>$v) { $rec_fare[$k] = mb_convert_encoding($v,'UTF-8','EUC-JP'); } echo "$rec_fare[tariff]"; } よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>料金の月の最安値 >20061001 20070115 300 >20070116 20070117 400 >20070118 20070331 570 >欲しい答え 10月300 11月300 12月300 1月400 2月570 3月570 えーと。この場合1月は400ではなくて300になるのでは? それが違うと全然ちがうので仕様をもっとしっかり提示してください。 とりあえず以下のようなやり方で調整になると思います。 まず日付管理用のテーブルを作って必要な集計月を登録おきます。 CREATE TABLE `date` (`month` VARCHAR(6)); INSERT INTO `date` VALUES('200610'),('200611'),('200612'),('200701'),('200702'),('200703'); あとは、以下のようにLEFT JOINしてやればよいでしょう。 SELECT `month`,MIN(`tariff`) AS `tariff` FROM `date` LEFT JOIN `ryoukin` ON `month` BETWEEN LEFT(`from`,6) AND LEFT(`to`,6) GROUP BY `month`;

takotan2
質問者

お礼

yambejpさま レスありがとうございました。データの間違い、申し訳ございませんでした。初心者ゆえご連絡遅くなり申し訳ございませんでした。 無事出来たのですが、データが 300300300・・・のように表示され、10月300、11月300・・・のような表示方法が分かりません。。。 図々しいお願いなのですが、どうすれば分割?できるのでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

例えば、2006年12月分のものならば、 SELECT min(`tariff`) FROM ryoukin WHERE `from` < '20070101' AND `to` >= '20061201'; で求められますよね。 PHPでループをまわして、月単位でクエリを投げてやればいいんじゃないでしょうか。 クエリ一回で、全月の結果を得る方法は、あるかもしれませんが、私には判りません。その回答を期待されているならば、mysqlのカテゴリで質問された方がよいかと思います。

takotan2
質問者

お礼

fdsjaklfjasさん 遅くなりましたが、回答ありがとうございました。 今回はyambejpさんの方法で無事出来ました。 でも考えていただいて感謝します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MySQLの日付データについて

    PHPでMySQLから日付データを表示しようとしているのですが、日付フィールドの値をvarcharにしてしまいました。 このような状況下での質問なのですが、varcharフィールドに2006年1月1日と2006年2月1日と2006年11月1日がある場合、PHPで日付データを表示するとこのような順番で表示されてしまいます。 2006年1月1日 2006年11月1日 2006年2月1日 下記のようなカレンダー順の表示にするにはどのような方法があるでしょうか? 2006年1月1日 2006年2月1日 2006年11月1日 また、下記の質問と回答を拝見したのですが、日付データはタイムスタンプで処理するのが一般的なのでしょうか? http://oshiete1.goo.ne.jp/qa1396724.html その場合、フィールドタイプをDATEにしておいて、PHPからMySQLに書き込む際はどのような形式が正しいのでしょうか? 2006/1/1のまま書き込んでも自動的にタイムスタンプに変換してくれるのでしょうか。 最後に私のような初心者がMySQLを勉強する際にお勧めの書籍やウェブサイトなどありましたら是非教えて頂けると幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlで日付が比較できない・・・

    はじめまして 皆様の知恵を貸してください mysqlでの質問なのですが、 簡潔にいうと日付が比較できません。 どういうことをしたいのかというとsqlからwhere文で今の日付より大きいもデータを抽出するということです データベースの構造は id int型 endtime datetime型 で構成されています endtimeには既にいくつかのdatetime型の値が入っています 例えば 2012-12-14 09:18:00 のように入っています でGETDATE()関数を使って今現在の時刻より未来のものだけ抽出するために convert関数を使って一度varchar型に変換することで比較しようとしました 色々インターネットで調べた結果次のような文なのではないかと考えました select id,endtime from [データベース名] where CONVERT(VARCHAR,endtime,121)>=CONVERT(VARCHAR,getdate(),121); しかし実行ができません 比較する方法を教えて欲しいです

    • ベストアンサー
    • MySQL
  • PHPでMySQLのMEDIUMBLOB型のデータを取り出す

    初めまして、宜しくお願いします。 現在ユーザ登録の管理をするデータベースを扱っています。 言語はPHP4と、MySQLを使用しています。 そのデータベースには、アイコン画像、登録者名、性別、 掲示板発言回数などのユーザー情報が保存されており、 データ型[MEDIUMBLOB]にまとめて保存されているようです。 (データベースは私が作成したものではいのですが) なのでそこから、それらの情報を取り出したいのですが、 [MEDIUMBLOB]型のデータの取り出し方が解らず困っています。 具体的にはデータだけならば取り出す事はできるものの、 バイナリ形式なので当然文字化けしているという感じです。 勉強不足ということは百も承知ですが、検索しても それらしい情報を見つけることもできず、ご存じの方が おられないかとこちらにて質問をさせていただきました。 お解りの方がおられましたらどうかアドバイスを 宜しくお願い致します。 -------------------------- // 以下のようなテーブルにデータが格納されていた場合 CREATE TABLE sample(   test_i INT,   test_s VARCHAR(64),   medium MEDIUMBLOB ); // 格納されているデータを取り出す $res = mysql_query( "SELECT test_i, medium FROM sample;" ); while( $list = mysql_fetch_assoc( $res ) ){   echo "$list['test_i']<br>";  //echo "$list['medium']<br>"; } 上記の通りをMEDIUMBLOB型ですると文字化けします。

    • ベストアンサー
    • PHP
  • 【php MySQL】データが取り出せない

    こんにちは。 MySQLのデータをphpで管理するページを作っていますが、壁にぶつかってしまいました。 データベースのあるフィールドに、「あああ」「いいい」「ううう」というようにいろんな言葉が登録されています。 これらを削除・追加するために、phpで取り出して、チェックボックスでリストアップします。 リストにない言葉は新たに登録できるように、テキストフィールドも用意しています。 □あああ □いいい □ううう 新規:[   ](テキストフィールド) というふうにです。 このフォームはちゃんと機能していまして、追加した言葉はデータベースに記録されているのですが、なぜかフォームにリストアップされないのです。 例えば、    □あああ □いいい □ううう 新規:[   ] で、新規のところに「かかか」と入れて送信すると、    □あああ □いいい □ううう □かかか 新規:[   ] となってほしいわけですけど、    □あああ □いいい □ううう □ 新規:[   ] となってしまうのです。 フォームを使って送信した言葉が、データベースに記録されていながら、取り出せないというのは、何が原因だと考えられるでしょうか? 何かすごく単純なことのような気がするので、ソースは載せないでおきます。 ご教示をよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPとMySQLを学習しているのですが・・・。

    ----------------- apache2.0.59 php5.24 MySQL5.0.45 ----------------- <?php $my_con = mysql_connect("localhost" , "hamu" , 'hamutamago'); if($my_con == false){ echo "MySQLに接続できました"; }else{ echo "MySQLに接続できました"; }; if(mysql_select_db("sample_sql")){ echo "データベース接続できました"; }else{ echo "データベース接続できませんでした"; } ?> PHPでMySQLと連動させる勉強をいましているのですが、PHPからMySQLへアクセスする事はできたのですが、自分で作成したデータベースへアクセすることができません。最初からMySQLに入っていたinformation_schemaというデータベース(?)にはアクセスできるみたいなのですが、自分で策瀬下データベースにはアクセスが出来ないようです。 なにかご存じのかたがいらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP+MySQLで

    PHPとMySQLにて、 データベースのテーブル[買い物]に、 「野菜」「日時」という属性を用意しておき、そこに (にんじん)(2006-10-31 09:00) (かぼちゃ)(2006-11-01 10:21) (たまねぎ)(2006-10-21 11:45) (もやし)(2006-12-22 14:00) が格納してあります。 ここから日付が、例えば、2006年の10月の行を抜き出すにはどうしたらよいのでしょうか? $y=$_GET['year'] $m=$_GET['month'] $d=$_GET['day'] として、年月日を得ます。 $y年の$m月分のデータを取得したいのですが、よく分かりません。 select * from 買い物 where 日時>$y-$m-1 and 日時<$y-$m-31 のような感じになるのでしょうか? どなたかよろしくお願いします。 MySQL4.4.4です。

    • ベストアンサー
    • PHP
  • mysqlからphpで値を取得する

    こんにちは、php初心者のBlackwinglsです。 mysql上に住所録があります。 mysql> select count(*) from jyusyo where seibetu = 'man' and name = 'tanaka'; とやると男性の田中さんは、6名と表示されます。 これをphpでやりたいのですが、 $sql ="select count(*) from jyusyo where seibetu = 'man' and name = 'tanaka'"; $result = mysql_query($sql,$con); ここから先の記述がよく分かりません。 mysql_fetch_array や mysql_result 等を試してみたんですが、基本的な事が分かってないので当然上手く動いてくれません(^^;) どなたかアドバイスを頂けたら幸いです。 環境 apache 1.3.26 mysql 3.23.49 php 4.1.2 ps php初心者にお勧めのWebPageありましたらあわせて紹介ください。

    • ベストアンサー
    • PHP
  • エクセル 日付による料金の最安値

    お世話になっております。日付毎に料金があるのですが月の最安値を求めたいのですが、方法が思いつきません。 例1)セルA セルB セルC 20061001 20061220 600 20061219 20070115 590 20070116 20070131 570 欲しい答え 10月600 11月600 12月590 1月570 2月570 3月570 例2) A B C 20061001 20070115 300 20070116 20070117 400 20070118 20070131 570 欲しい答え 10月300 11月300 12月300 1月300 2月570 3月570 よろしくお願いします。

  • PHPからMySQLの起動について

    PHPからMySQLの起動について レンタルサーバーを借りてPHP,MySQLの勉強をしています。 PHPからMySQLの起動ができなくて困っていますので、教えていただきたいのですが、 <?PHP $dbkidou = mysql_connect("どこのサーバーか","ユーザー名","パスワード"); //データベースの起動ができなかった場合 if ($dbkidou == False) { print ("error"); exit; } $db = "データベースの名前"; ?> まずレンタルサーバーのドメインを「abc.com」としています。これに対するユーザー名が「def」、パスワードが「ghi」です。 そしてMySQLデータベースは「jkl_m」,「jkl_n」の2つを設けていて(phpMyAdminで作成しました)MySQLユーザ名が「opq」、パスワードが「rst」です。今回は「jkl_m」のサーバーを起動させたいのですが、上記PHP文の、 どこのサーバーか ユーザー名 パスワード データベースの名前 の各部分にどれを書けば良いのでしょうか? 何通りか試しているのですが、うまくいかないんです…

    • ベストアンサー
    • PHP
  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL