Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Optimieren Sie die Iteration durch das Array mithilfe von Foreach-Schleifen

Sie müssen nur eine gute MySQL-Abfrage durchführen.

Siehe hier .

Sie können Additionen, Subtraktionen und Dinge wie date BETWEEN x AND Y ausführen , können Sie eine SELECT SUM() ausführen mit einem GROUP BY und so weiter.

Was Hakan meint (glaube ich), ist, dass Sie es falsch machen:Sie sollten zuerst eine Abfrage machen, die Ihnen fast die ganze Arbeit abnimmt. Keine Notwendigkeit, so komplexe Dinge zu entwickeln.

Und drei weitere Ratschläge:

  • Vermeiden Sie Schlüsselwörter in Php wie $expense->Date . Dies führt zu Syntaxhervorhebungsproblemen (im besten im schlechtesten Fall Php versteht Ihren Code nicht).
  • Fügen Sie Ihrem Code weitere Kommentare hinzu, um zu erklären, was Sie zu tun versuchen.
  • Versuchen Sie Schlüsselwörter in Php UND zu vermeiden SQL-Abfragen. Sie haben eine Spalte mit dem Namen "Date". ' und eine Spalte namens 'Type '. Das ist nicht sicher.

Hier ist nur ein Anfang davon, wie Ihr SQL aussehen könnte, und es sollte fast 95 % Ihres Codes abdecken. Hinweis:Dies ist ein Vorschlag:Lassen Sie alle Datenbankserver die Arbeit für Sie erledigen, das ist dafür gemacht:

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'