sql >> Databáze >  >> RDS >> Mysql

dotaz na vícerozměrné pole mysql

V jádru to vypadá jako problém s databází.

Nastavte sloupec procent jako NOT NULL a nastavte 0 jako DEFAULT.

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

Pak jde o to (pokud rozumím problému) vybrat hodnoty MAX() a MIN() procent pro každé datum.

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;

...to jsem netestoval, takže to možná bude potřeba trochu pohrát.

Když pak procházíte svou výsledkovou sadou, můžete deklarovat dvě samostatná podpole a vytvořit kompletní pole.

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

V tuto chvíli jsem udělal příliš mnoho předpokladů o vašem účelu/použití. V zásadě nastavte nulu jako výchozí procento, dotazujte se na nejvyšší a nejnižší procento pro každý pár datum-sazba (pokud je nula, pak se nula zobrazí jako nejvyšší a nejnižší hodnota). Se sadou výsledků si dělejte, co chcete.




  1. Vynutit pokles mysql obcházením omezení cizího klíče

  2. Nejlepší způsob, jak odstranit hodnotu z pole SET?

  3. Nesprávná desítková (celé) hodnota:' ' mySQL

  4. Výraz případu nefunguje správně v dotazu SQL