2017年9月13日水曜日

今日もグラフいぢり

表示上の調整を主に行ってみました。

Y軸ラベルの気温を表示させるために処理を手直ししたり、動的に範囲を変えるように手直ししたり。
気温、湿度、気圧の最大最小値を求めるために副問い合わせを利用したところsqlite3でもちゃんと利用できそうですね。構文が怪しかったのでsqlite 副問い合わせ で検索したらサブクエリの制限があるようなことが書いてあったので、恐る恐るゴリっと問い合わせ文を打ち込んでみたのですが、あっさりと返答が返されました。

        $stmt = $pdo->prepare(
                "select"
                . " min(board_min, temperature_min, temperature2_min, temperature3_min) 'temperature_min'"
                . ",max(board_max, temperature_max, temperature2_max, temperature3_max) 'temperature_max'"
                . ",min(pressure_min, pressure2_min) 'pressure_min'"
                . ",max(pressure_max, pressure2_max) 'pressure_max'"
                . ",min(humidity_min, humidity3_min) 'humidity_min'"
                . ",max(humidity_max, humidity3_max) 'humidity_max'"
                . " from (select"
                . " min(board) 'board_min',max(board) 'board_max',"
                . " min(temperature) 'temperature_min',max(temperature) 'temperature_max',"
                . " min(pressure) 'pressure_min',max(pressure) 'pressure_max',"
                . " min(humidity) 'humidity_min',max(humidity) 'humidity_max',"
                . " min(temperature2) 'temperature2_min',max(temperature2) 'temperature2_max',"
                . " min(pressure2) 'pressure2_min',max(pressure2) 'pressure2_max',"
                . " min(temperature3) 'temperature3_min',max(temperature3) 'temperature3_max',"
                . " min(humidity3) 'humidity3_min',max(humidity3) 'humidity3_max'"
                . " from temperatures)");
        $stmt->execute([]);
        $r1 = $stmt->fetchAll();

ここまで試した後ですが、保存用の巨大なテーブルからキー無しで対象データを絞り込んでmin(), max()を求めるのはどうかと思うので、抽出データをphp上で転がした方がよさそうです。
今はramdiskのテーブルだけを対象にさせて手を抜いていますが、気になったら手を入れるべきところでしょうね。

0 件のコメント:

コメントを投稿