Comment comparer des paeriodes [Résolu]

Signaler
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Bonjour,
j'aimerai récupérer la plus grande période lorsqu'elle est inférieur à la période entrée.

voici une image de la table loyers


voici la stucture de la table loyers

CREATE TABLE IF NOT EXISTS `loyers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`periode` varchar(30) NOT NULL,
`montant` int(30) NOT NULL,
`id_ch` int(11) NOT NULL,
`id_bat` int(11) NOT NULL,
`session` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1022 ;

1 réponse

Messages postés
29628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 septembre 2020
337
Bonjour,


Tu dois pouvoir directement t'en sortir avec ta requête
avec un truc du genre
SELECT T.*
FROM 
 ( SELECT L.*
      ,CAST(SUBSTR(L.periode,1,2) AS SIGNED INTEGER) MOIS
      ,CAST(SUBSTR(L.periode,4,4) AS SIGNED INTEGER)  ANNEE  
 FROM loyers L
 WHERE id_bat = '".$row_LOC["id_bat"]."'
  AND id_ch = '".$idrs[3]."'
        AND concat(ANNEE,MOIS) <= '".$idrs[2] . $idrs[1]."'
) T

ORDER BY concat(ANNEE,MOIS) DESC
LIMIT 1


Cordialement, 
Jordane                                                                 
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

Bonjour j'ai exécuté en directe cette requête voici l'erreur qui s'affiche :
#1054 - Unknown column 'ANNEE' in 'where clause'
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

Bonjour je sais pas comment résoudre cette erreur
Messages postés
29628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 septembre 2020
337
SELECT L.*
      ,CAST(SUBSTR(L.periode,1,2) AS SIGNED INTEGER) MOIS
      ,CAST(SUBSTR(L.periode,4,4) AS SIGNED INTEGER)  ANNEE    
      ,concat(SUBSTR(L.periode,4,4),SUBSTR(L.periode,1,2)) as PERIODEyyyymm
 FROM loyers L
 WHERE id_bat = '7'
  AND id_ch = '717'
  AND concat(SUBSTR(L.periode,4,4),SUBSTR(L.periode,1,2)) <= '201812'
  ORDER BY concat(SUBSTR(L.periode,4,4),SUBSTR(L.periode,1,2)) DESC
LIMIT 1
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

ça marche parfaitement. Merçi beaucoup.