Mysql
 sql >> Database >  >> RDS >> Mysql

query array multidimensionale mysql

In sostanza, sembra un problema di database.

Imposta la colonna percentuale su NOT NULL e imposta 0 come DEFAULT.

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

Quindi si tratta (se ho capito il problema) di raccogliere i valori percentuali MAX() e MIN() per ogni data.

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;

...Non l'ho testato, quindi potrebbe essere necessario giocherellare con.

Quindi, mentre esegui il ciclo del tuo set di risultati, puoi dichiarare i due sottoarray separati e creare il tuo array completo.

$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;
}

A questo punto, ho fatto troppe ipotesi sul tuo scopo/utilizzo. Fondamentalmente, imposta zero come percentuale predefinita, esegui una query per la percentuale più alta e più bassa per ogni coppia data-tasso (se zero, allora zero apparirà come più alto e più basso valore). Fai quello che vuoi con il set di risultati.