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

Tối ưu hóa việc lặp qua mảng bằng cách sử dụng vòng lặp foreach

Bạn chỉ cần thực hiện một truy vấn MySQL tốt.

Xem tại đây .

Bạn có thể thực hiện các phép cộng, phân số và những thứ như date BETWEEN x AND Y , bạn có thể thực hiện SELECT SUM() với GROUP BY và như vậy.

Ý của Hakan (tôi đoán vậy) là bạn đang làm sai cách:trước tiên bạn nên thực hiện một truy vấn để hầu như hoàn thành công việc cho bạn. Không cần phải phát triển những thứ phức tạp như vậy.

Và ba lời khuyên khác:

  • cố gắng tránh các từ khoá trong Php như $expense->Date . Điều này làm cho các vấn đề về tô sáng cú pháp (trong tốt nhất trong trường hợp xấu nhất Php sẽ không hiểu mã của bạn).
  • thêm các nhận xét khác vào mã của bạn để giải thích những gì bạn đang cố gắng thực hiện.
  • cố gắng tránh các từ khoá trong Php Truy vấn SQL. Bạn có một cột tên là 'Date 'và một cột có tên' Type '. Điều này không an toàn.

Đây chỉ là sự khởi đầu của SQL của bạn có thể trông như thế nào và nó gần như sẽ bao phủ 95% mã của bạn. Lưu ý:đây là một gợi ý:hãy để tất cả máy chủ cơ sở dữ liệu thực hiện công việc cho bạn, điều này được thực hiện cho điều đó:

SELECT
    ps.Due,ps.Date,
    wt.Amount,wt.Date,
    ex.Amount,ex.Date

LEFT JOIN patient_sessions ps
    ON xxx
    WHERE ps.Type='Session'
    AND ps.Date
        BETWEEN DATE_ADD(NOW(), INTERVAL '-28' DAY)
        AND     DATE_ADD(NOW(), INTERVAL 1 DAY)
LEFT JOIN work_times wt
    ON xxx
LEFT JOIN expenses ex
    ON xxx
    WHERE ex.Client='Psychotherapy'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham số số 2 không phải là tham số OUT

  2. Lỗi nghiêm trọng:Gọi đến hàm không xác định getqlvaluestring ()

  3. Tấn công SQL Injection - Điều này làm gì?

  4. Lỗi cú pháp với IF EXISTS UPDATE ELSE INSERT

  5. Plugin xác thực 'caching_sha2_password' không được hỗ trợ