Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kueri array multidimensi mysql

Pada intinya, ini terasa seperti masalah database.

Setel kolom persen sebagai NOT NULL dan setel 0 sebagai DEFAULT.

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

Maka itu adalah masalah (jika saya memahami masalahnya) memetik nilai persen MAX() dan MIN() untuk setiap tanggal.

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;

...Saya belum mengujinya, jadi mungkin perlu sedikit mengutak-atik.

Kemudian saat Anda mengulang set hasil Anda, Anda dapat mendeklarasikan dua subarray terpisah dan membangun array lengkap Anda.

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

Pada titik ini, saya telah membuat terlalu banyak asumsi tentang tujuan/penggunaan Anda. Pada dasarnya, tetapkan nol sebagai default persen, kueri untuk persen tertinggi dan terendah untuk setiap pasangan tingkat tanggal (jika nol, maka nol akan muncul sebagai tertinggi dan terendah nilai). Lakukan apa pun yang Anda inginkan dengan set hasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL mengurutkan berdasarkan beberapa daftar

  2. MySQL INSERT tanpa harus menentukan setiap bidang non-default (#1067 - Nilai default tidak valid untuk 'tabel')

  3. Bagaimana cara MYSQL Self-Join Bekerja?

  4. MySQL - prosedur tersimpan mengembalikan nilai yang tidak terduga

  5. Jadikan mysql case sensitif?