Comment comparer des paeriodes [Résolu]

Messages postés
486
Date d'inscription
lundi 24 août 2009
Dernière intervention
15 mars 2019
- - Dernière réponse : msi79
Messages postés
486
Date d'inscription
lundi 24 août 2009
Dernière intervention
15 mars 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 

Votre réponse

1 réponse

Messages postés
25042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mars 2019
365
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
486
Date d'inscription
lundi 24 août 2009
Dernière intervention
15 mars 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
486
Date d'inscription
lundi 24 août 2009
Dernière intervention
15 mars 2019
-
Bonjour je sais pas comment résoudre cette erreur
jordane45
Messages postés
25042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mars 2019
365 -
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
486
Date d'inscription
lundi 24 août 2009
Dernière intervention
15 mars 2019
-
ça marche parfaitement. Merçi beaucoup.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.