|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
Bonjour. J'ai une table:
Code :
La si je donne en entré 2011 et 04 ( pour le mois) je veux que la deuxième ligne. Comment dois je faire cela? moi je faisais Code :
Mais évidement, ca me sélectionne toutes les lignes inférieur aux conditions. Moi je voudrai que la plus proche de manière inférieur Merci de votre aide |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Il faut le faire en passant par une sous-requête :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
merci ca fonctionne
c cool je pense jamais au ss requête. Jte remercie pour ta réactivité. |
|
|
00
|
|
|
#4 | ||||
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
En fait c bizarre.
Code :
1 2.2 0.15 2011-02-17 00:00:00 Code :
2 12 45 2014-03-17 14:37:58 J'ai changer la deuxième ligne de ma base de données. J'ai transformé l année 2011 en 2014 pour tester. Donc dans les deux requêtes précédentes le résultat aurait du être la même ligne , celle avec 2014. La requete fonctionne bien avec seulement le WHERE sur les années ou seulement sur les mois mais les deux clause du where n'ont pas l'air de fonctionner ensemble. Merci |
||||
|
|
00
|
|
|
#5 |
![]() ![]() |
Essayez d'être plus clair car même après trois lectures, je n'ai toujours pas compris votre test et ce qui ne va pas.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#6 | ||
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
Oui au temps pour moi.
Alors dans ma base il y a Code :
En testant votre requête avec comme entrée l'année 2015 et le mois 2 ca me sélectionne la ligne numéro 1 c'est à dire celle ou date_MAJ = 2011-02 Or pour ces valeurs la date la plus proche de manière inférieur est la deuxieme ligne où date_MAJ= 2014-03 En testant la même requête avec comme entrée toujours l'année 2015 et comme mois 4 et ben ce coup ci , cela me renvoi la ligne numéro 2 où la date_MAJ est 2014-03. Ce coup ci la requête m'a bien renvoyé ce qu'il fallait. |
||
|
|
00
|
|
|
#7 |
![]() ![]() |
Merci pour les précisions.
Effectivement comme vous l'avez déduit il y a deux tests séparés, un pour l'année et un pour le mois. À priori votre colonne date_MAJ possède bien un format de type date. Il faut donc simuler une date fixe à partir de ce que vous allez saisir : pour vous aider sur ce point j'ai besoin de connaître votre SGBD et sa version.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#8 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Une condition de ce type ne serai-t-elle pas suffisante ?
Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
En effet, 3 est plus grand que 4 (et ceci est valable également dans les SGBDR Donc dans votre premiere requete, la condition MONTH(date_MAJ) <= 2 n'est pas remplie. Pour etre correcte, vous devriez ecrire : Code sql :
Cela dit, vu que vous avez bien une colonne de type date, il me semble que vous obtiendrez de meilleures performances en "reconstruisant" la date à partir de vos deux parametres annee et mois, puis en faisant une simple comparaison... |
||
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
mysql 5.1.49
phpmyadmin 3.3.5 |
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : avril 2010 Messages : 105 ![]() |
Je vais tenter vos solutions.
Merci |
|
|
00
|
|
|
#12 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Sur mysql il y a YEAR_MONTH
http://dev.mysql.com/doc/refman/5.0/...functions.html Citation:
Code :
EXTRACT(YEAR_MONTH FROM date_MAJ) <= 201502; |
|
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Tout à fait, il vaut mieux reconstruire une date à partir des constantes plutôt que de convertir toutes les dates de la table.
J'espère ne pas avoir commis d'impair de syntaxe : Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Oui c'est mieux de ne pas convertir effectivement, mais je rejouterais LAST_DAY pour coller au besoin initial:
Citation:
Code :
LAST_DAY(STR_TO_DATE('20150401', '%Y%m%d')) |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com