Comment comparer des paeriodes [Résolu]

Signaler
Messages postés
499
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 avril 2021
-
Messages postés
499
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 avril 2021
-
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
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
345
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
499
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 avril 2021
1
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
499
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 avril 2021
1
Bonjour je sais pas comment résoudre cette erreur
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
345
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
499
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 avril 2021
1
ça marche parfaitement. Merçi beaucoup.