Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimize a iteração através do array usando loops foreach


Você só precisa fazer uma boa consulta MySQL.

Veja aqui .

Você pode fazer adições, subtrações e coisas como date BETWEEN x AND Y , você pode fazer um SELECT SUM() com um GROUP BY e assim por diante.

O que Hakan quer dizer (eu acho) é que você está fazendo isso da maneira errada:primeiro você deve fazer uma consulta que faça quase todo o trabalho para você. Não há necessidade de desenvolver uma coisa tão complexa.

E três outros conselhos:
  • tente evitar palavras-chave em PHP como $expense->Date . Isso cria problemas de realce de sintaxe (no melhor caso, no pior Php não entenderá seu código).
  • adicione mais comentários em seu código para explicar o que você está tentando fazer.
  • tente evitar palavras-chave em PHP E consultas SQL. Você tem uma coluna chamada 'Date ' e uma coluna chamada 'Type '. Isso não é seguro.

Aqui está apenas um começo de como seu SQL pode ser, e quase deve cobrir 95% do seu código. Nota:esta é uma sugestão:deixe que todos os servidores de banco de dados façam o trabalho para você, isso é feito para isso:
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'