Mysql
 sql >> Database >  >> RDS >> Mysql

Ottimizza l'iterazione attraverso l'array usando i cicli foreach

Hai solo bisogno di fare una buona query MySQL.

Vedi qui .

Puoi fare addizioni, sottrazioni e cose come date BETWEEN x AND Y , puoi eseguire un SELECT SUM() con un GROUP BY e così via.

Ciò che Hakan significa (credo) è che lo stai facendo nel modo sbagliato:dovresti prima fare una query che faccia quasi tutto il lavoro per te. Non c'è bisogno di sviluppare cose così complesse.

E altri tre consigli:

  • Cerca di evitare parole chiave in Php come $expense->Date . Questo rende i problemi di evidenziazione della sintassi (nel best caso, nel peggiore Php non capirà il tuo codice).
  • aggiungi altri commenti nel tuo codice per spiegare cosa stai cercando di fare.
  • cerca di evitare le parole chiave in Php AND Query SQL. Hai una colonna denominata 'Date ' e una colonna denominata 'Type '. Questo non è sicuro.

Ecco solo un inizio di come potrebbe apparire il tuo SQL e dovrebbe quasi coprire il 95% del tuo codice. Nota:questo è un suggerimento:lascia che tutti i server di database facciano il lavoro per te, questo è fatto apposta per questo:

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'