sql >> データベース >  >> RDS >> Mysql

多次元配列クエリmysql

    基本的に、これはデータベースの問題のように感じます。

    パーセント列をNOTNULLとして設定し、0をデフォルトとして設定します。

    ALTER TABLE promotions CHANGE COLUMN percent [maintain-its-type] NOT NULL DEFAULT '0';
    

    次に、(問題を理解している場合は)各日付のMAX()およびMIN()パーセント値を抽出する必要があります。

    SELECT s.date, s.rate, MAX(p.percent) AS maxperc, MIN(p.percent) AS minperc
        FROM stock s
        LEFT JOIN promotions p ON s.date = p.date
        WHERE s.date BETWEEN '2017-01-29' AND '2017-01-31'
        GROUP BY s.date,s.rate;
    

    ...私はそれをテストしていないので、いじる必要があるかもしれません。

    次に、結果セットをループしながら、2つの別個のサブ配列を宣言し、完全な配列を構築できます。

    $array=[];
    $i=0;
    while($row=mysqli_fetch_assoc($result)){
        $array[0][$i]["date"]=$row["date"];
        $array[0][$i]["rate"]=$row["rate"];
        $array[0][$i]["perc"]=$row["minperc"];
        $array[1][$i]["date"]=$row["date"];
        $array[1][$i]["rate"]=$row["rate"];
        $array[1][$i]["perc"]=$row["maxperc"];
        ++$i;
    }
    

    この時点で、私はあなたの目的/使用法についてあまりにも多くの仮定をしました。基本的に、パーセントのデフォルトとしてゼロを設定し、各日付レートペアの最高と最低のパーセントをクエリします(ゼロの場合、ゼロは最高と最低として表示されます価値)。結果セットで好きなことをしてください。




    1. Sqlalchemyはページ付けでは機能しません

    2. HQLクエリでネイティブSQL関数を使用するにはどうすればよいですか?

    3. SQLiteのCount()結果から重複を削除

    4. 左外部結合から返されたデフォルトのヌル値を置き換える