Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1692 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] - Sélection d'un relevé du mois précédent

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] - Sélection d'un relevé du mois précédent

n°2333990
Furaxx
Posté le 26-05-2019 à 11:58:35  profilanswer
 

Bonjour,
 
J'ai une table "releves" avec ceci comme champs:
- id (int)
- date (date)
- releves (float)
 
J'ai un relevé par mois.
 
Je souhaiterais récupéré comme résultats la liste des relevés pour une année demandée, et pour chacun en plus le relevé du mois précédent.
 
Exemple de résultats:
 
janvier 2018 - 230 - 225 (225 correspondant au relevé du mois de décembre 2017)
Février 2018 - 236 - 230
Mars 2018 - 241 - 236
Etc...
 
Ma requête actuelle:
 

Code :
  1. SELECT
  2.                         date,
  3.                         releve,
  4.             (SELECT
  5.       releve
  6.      FROM
  7.       maconso_eau e
  8.      WHERE
  9.       MONTH(e.date) = MONTH(date)  - INTERVAL 1 MONTH) AS previous
  10.                     FROM
  11.                         releves
  12.                     WHERE
  13.                         YEAR(date)=:annee
  14.                     ORDER BY
  15.                         date ASC


 
Le "previous" est toujours à null. Purquoi pas, mais je ne parviens pas à trouver la solution...
Merci! :)

mood
Publicité
Posté le 26-05-2019 à 11:58:35  profilanswer
 

n°2333991
Furaxx
Posté le 26-05-2019 à 12:05:16  profilanswer
 

Le temps de poster la question et j'ai trouvé quelque chose qui marche mais j'ai un doute sur le fait que ça soit une solution "idéale":
 

Code :
  1. SELECT
  2. ce.date,
  3.         ce.releve,
  4.         (SELECT
  5.  releve
  6. FROM
  7.  releves e
  8. WHERE
  9.  MONTH(e.date) = MONTH(ce.date - INTERVAL 1 MONTH)
  10.         LIMIT 0,1) AS previous
  11. FROM
  12. releves ce
  13. WHERE
  14. YEAR(ce.date)=:annee
  15. ORDER BY
  16. ce.date ASC


 
Si je ne précise pas de LIMIT dans ma requête imbriquée j'ai une erreur de cardinalité, le résultat me renvoyant plus d'une ligne et ça je ne comprends pas pourquoi car pour moi je lui demande juste le releve du mois précédent.
Bref, si vous avez quelque chose de plus propre je suis preneur...
 
Merci! :)

n°2334279
rufo
Pas me confondre avec Lycos!
Posté le 30-05-2019 à 10:05:46  profilanswer
 

Tu peux faire un truc similaire mais en mettant 2 fois la table releves dans le FROM (donc pas besoin de sous-requête).
 
SELECT ce1.date, ce1.releve, ce2.releve AS Previous FROM releves ce1 INNER JOIN releves ce2 ON (MONTH(ce2.date) = MONTH(ce1.date - INTERVAL 1 MONTH)) WHERE YEAR(ce1.date)=:annee
ORDER BY
ce1.date


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2334362
Furaxx
Posté le 02-06-2019 à 17:02:12  profilanswer
 

Bonjour,
 
En effet, je trouve ça plus propre comme méthode, pas pensé à ça.
Merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] - Sélection d'un relevé du mois précédent

 

Sujets relatifs
MSSQL Obtenir les dates du début du mois en cours jusqu’à hier[résolu] Tester si un evariable est bien une connexion Mysql ?
[MySQL] - Sélectionner enregistrements qui ne sont pas ailleurs[MySQL] Nombre de cours et exercices avec une seules requête
[MySQL] temps fetching trop important[MySQL] Plusieurs tables ou une seule grosse dans ce cas?
dupliquer une feuille de mon classeur chaque moisOut of memory - sql Oracle/php
Projet de stage php/mysqlUtilisation d'une selection en VBA
Plus de sujets relatifs à : [MySQL] - Sélection d'un relevé du mois précédent


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR