Comment comparer des paeriodes [Résolu]

Messages postés
494
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
18 août 2019
- - Dernière réponse : msi79
Messages postés
494
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
18 août 2019
- 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 ;
Afficher la suite 

1 réponse

Messages postés
26516
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 octobre 2019
316
0
Merci
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                                                                 
msi79
Messages postés
494
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
18 août 2019
-
Bonjour j'ai exécuté en directe cette requête voici l'erreur qui s'affiche :
#1054 - Unknown column 'ANNEE' in 'where clause'
msi79
Messages postés
494
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
18 août 2019
-
Bonjour je sais pas comment résoudre cette erreur
jordane45
Messages postés
26516
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 octobre 2019
316 -
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
msi79
Messages postés
494
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
18 août 2019
-
ça marche parfaitement. Merçi beaucoup.
Commenter la réponse de jordane45