sql >> Base de Datos >  >> RDS >> Mysql

consulta de matriz multidimensional mysql

En esencia, parece un problema de la base de datos.

Establezca la columna de porcentaje como NO NULO y establezca 0 como PREDETERMINADO.

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

Entonces se trata de (si entiendo el problema) extraer los valores porcentuales MAX() y MIN() para cada fecha.

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;

... No lo he probado, por lo que es posible que deba modificarse un poco.

Luego, mientras recorre su conjunto de resultados, puede declarar los dos subarreglos separados y construir su arreglo 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;
}

En este punto, he hecho demasiadas suposiciones sobre su propósito/uso. Básicamente, establezca cero como el porcentaje predeterminado, consulte el porcentaje más alto y más bajo para cada par de tasa de fecha (si es cero, cero aparecerá como el más alto y el más bajo). valor). Haz lo que quieras con el conjunto de resultados.