Comment comparer des paeriodes

Résolu
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 11 janv. 2019 à 13:19
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 14 janv. 2019 à 12:39
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié le 11 janv. 2019 à 13:32
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


0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
13 janv. 2019 à 12:11
Bonjour j'ai exécuté en directe cette requête voici l'erreur qui s'affiche :
#1054 - Unknown column 'ANNEE' in 'where clause'
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
14 janv. 2019 à 11:31
Bonjour je sais pas comment résoudre cette erreur
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
14 janv. 2019 à 11:47
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
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
14 janv. 2019 à 12:39
ça marche parfaitement. Merçi beaucoup.
0
Rejoignez-nous