Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

truy vấn mảng đa chiều mysql

Về cốt lõi, điều này giống như một vấn đề cơ sở dữ liệu.

Đặt cột phần trăm là NOT NULL và đặt 0 là DEFAULT.

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

Sau đó, vấn đề là (nếu tôi hiểu vấn đề) lấy giá trị phần trăm MAX () và MIN () cho mỗi ngày.

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;

... Tôi chưa kiểm tra điều đó, vì vậy nó có thể cần một chút thao tác.

Sau đó, khi bạn lặp qua tập kết quả của mình, bạn có thể khai báo hai mảng con riêng biệt và xây dựng mảng hoàn chỉnh của mình.

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

Đến thời điểm này, tôi đã đưa ra quá nhiều giả định về mục đích / cách sử dụng của bạn. Về cơ bản, hãy đặt số 0 làm phần trăm mặc định, truy vấn phần trăm cao nhất và thấp nhất cho mỗi cặp tỷ lệ ngày (nếu bằng không, thì số không sẽ xuất hiện là cao nhất và thấp nhất giá trị). Làm bất cứ điều gì bạn muốn với tập hợp kết quả.




  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 select riêng biệt không hoạt động

  2. Nhận kết quả từ MySQL bằng PDO

  3. Dữ liệu sẽ được thay thế theo bảng tra cứu

  4. Lỗi khi gọi thủ tục được lưu trữ MySQL thông qua PHP

  5. Truy vấn để tìm các bảng được sửa đổi trong giờ trước