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

multidimensional array forespørgsel mysql

I sin kerne føles dette som et databaseproblem.

Indstil procentkolonnen som NOT NULL og indstil 0 som STANDARD.

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

Så er det et spørgsmål om (hvis jeg forstår problemet) at plukke MAX() og MIN() procentværdierne for hver dato.

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;

...det har jeg ikke testet, så det kan godt være, at det skal pusle med.

Når du derefter går gennem dit resultatsæt, kan du erklære de to separate underarrays og bygge dit komplette array.

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

På dette tidspunkt har jeg lavet for mange antagelser om dit formål/brug. Grundlæggende skal du angive nul som procentstandard, forespørg efter højeste og laveste procent for hvert dato-rate-par (hvis nul, vil nul vises som højeste og laveste værdi). Gør hvad du vil med resultatsættet.




  1. null vs tom streng i Oracle

  2. Hver specifik hverdag, sql og php

  3. hvorfor udføres 'create table' i sql script 3 gange, når der kun bruges 1 create statement?

  4. Rettelser til SQL Server 2012 &2014 Online Index Rebuild Issue