Bonjour à tous,
Je bloque sur une requête que je souhaite faire mais il me semble que j'ai une mauvaise approche car le ORDER BY ne semble pas marcher.
Ici j'ajoute un filtre de plus pour ne viser que MIV087 (car je sais qu'il y a 2 entrées mais ne doit sortir que 1).
Les données concernent 2 tables : equipement (une entrée unique par equipement) et equipementaction (+sieurs entrées par équipement)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT COUNT(*) AS nbpresent, (SELECT COUNT(*) FROM equipement WHERE equipement.periodicite >=1) As nbtotal FROM equipement INNER JOIN equipementaction ON equipement.codeidentifiant = equipementaction.codeidentifiant WHERE equipement.periodicite >= 1 AND equipement.codeidentifiant LIKE 'MIV087' AND (CURDATE() <= ADDDATE(equipementaction.actiondate, INTERVAL equipement.periodicite MONTH)) ORDER BY equipementaction.actiondate DESC LIMIT 0, 1
table equipement:
... codeidentifiant periodicite ... ... MIV087 12 ...
table equipementaction: (champ actiondate format date)
Pour information, la date d'action fait parti du filtre car je recherche les équipements ayant une action à jour. En effet, le champ periodicite étant le nombre de mois où il faut faire un contrôle/suivi (délais ici tout les 12 mois) auquel je rajoute (ADDDATE) ce nombre de mois au champ actiondate (derniere action enregistrée) pour avoir equipement dont la derniere date d'action (de suivi ou autre) est inférieure au délais (de 12 mois) selon la date en cours (CURDATE<= ...).
... codeidentifiant actiondate ... ... MIV087 2016-04-01 ... ... MIV087 2016-03-03 ...
Je souhaite comptabiliser 1 avec la requête grace à l'emploi de ORDER BY actiondate DESC LIMIT 1 (pour ne compter que le plus récent)
Mais cela ne marche pas (me donne 2). Si j'enlève ORDER BY DESC LIMIT, cela me donne aussi 2 (comme si cela ne changait rien). Remarque, si je mets offset 1 (LIMIT 1, 1) cela ne me donne plus rien (alors que devrais me donner 1 je pense, le second de la liste).
J'ai bien 2 entrées dont la date est <= à la date d'aujourd'hui + 12 mois, mais je ne souhaite ne compter que le plus récent.
Merci à celui qui peut me dire comment faire.







Répondre avec citation
Partager