sql >> Databasteknik >  >> RDS >> Mysql

Optimera iterering genom array med hjälp av foreach loops

Du behöver bara göra en bra MySQL-fråga.

Se här .

Du kan göra tillägg, subtraktioner och saker som date BETWEEN x AND Y , kan du göra en SELECT SUM() med en GROUP BY och så vidare.

Vad Hakan menar (tror jag) är att du gör det på fel sätt:du bör först göra en fråga som gör nästan allt arbete åt dig. Inget behov av att utveckla en så komplex sak.

Och tre andra råd:

  • försök att undvika nyckelord i Php som $expense->Date . Detta gör syntaxmarkeringsproblem (i bäst). i det värsta Php kommer inte att förstå din kod).
  • lägg till fler kommentarer i koden för att förklara vad du försöker göra.
  • försök att undvika sökord i Php OCH SQL-frågor. Du har en kolumn som heter 'Date ' och en kolumn med namnet 'Type '. Detta är inte säkert.

Här är bara en början på hur din SQL kan se ut, och den borde nästan täcka 95 % av din kod. Notera:detta är ett förslag:låt alla databasservrar göra jobbet åt dig, detta är gjort för det:

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. PGAdmin visar överdriven mängd databas från Heroku

  2. Hitta alla postnummer inom angivet avstånd från ett postnummer

  3. PostgreSQL-replikeringsinställningar och underhåll med Ansible

  4. Visa senaste meddelandet i en meddelandematris