Mysql
 sql >> Base de données >  >> RDS >> Mysql

Optimiser l'itération dans le tableau à l'aide de boucles foreach

Il vous suffit de faire une bonne requête MySQL.

Voir ici .

Vous pouvez faire des additions, des soustractions et des choses comme date BETWEEN x AND Y , vous pouvez faire un SELECT SUM() avec un GROUP BY et ainsi de suite.

Ce que signifie Hakan (je suppose), c'est que vous le faites de la mauvaise manière :vous devez d'abord faire une requête qui fait presque tout le travail pour vous. Pas besoin de développer une chose aussi complexe.

Et trois autres conseils :

  • essayez d'éviter les mots-clés en Php comme $expense->Date . Cela rend les problèmes de coloration syntaxique (dans le meilleur cas, dans le pire Php ne comprendra pas votre code).
  • ajoutez d'autres commentaires dans votre code pour expliquer ce que vous essayez de faire.
  • essayez d'éviter les mots-clés en Php ET Requêtes SQL. Vous avez une colonne nommée 'Date ' et une colonne nommée 'Type '. Ce n'est pas sûr.

Voici juste un début de ce à quoi votre SQL pourrait ressembler, et il devrait presque couvrir 95 % de votre code. Note :ceci est une suggestion :laissez tous les serveurs de base de données faire le travail à votre place, ceci est fait pour cela :

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'