Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 04h56   #1
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 37
Points : 37
Par défaut récupération de données suivant une date

Bonjour,

J'ai toujours mon problème de requête de sélection suivant la date.

Tous les jours, je lance un script qui trie tous les participants, donc le champs
"FLAG" est à "N" et teste si la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.


Vérification de la date :
Code :
1
2
3
4
5
 
SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE 
FROM RANDONNEUR 
WHERE LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY) 
AND FLAG ='N'
Le problème, c'est que la requête ne me sélectionne pas les bons participants

Les dates sélectionnées par la requête du 2010-12-14 devraient être vides, alors qu'elle me sélectionne des dates en avance
Citation:
randonneur : 216 - BONNEAU Stéphanie - xxx@xxx.fr - 2010-12-10
randonneur : 214 - GENDRE Celine - xxx@xxx.com - 2010-11-19
randonneur : 215 - LYCURGUE Ludivine - xxx@xxx.fr - 2010-11-16
Merci du coup de pouce
gilles974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 07h16   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 529
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 529
Points : 3 521
Points : 3 521
Saluton,
Code sql :
1
2
SELECT DATE_ADD( CURDATE( ) , INTERVAL -30
DAY )
retourne ce matin
Citation:
2010-11-14
résultat auquel 2010-12-10, 2010-11-19 et 2010-11-16 me semblent effectivement supérieurs
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 10h54   #3
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 37
Points : 37
merci pour ta reponse

donc la requet devrais se presenter comme cela
Code :
1
2
3
4
 
SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE, DATE_ADD( CURDATE( ) , INTERVAL -30
FROM RANDONNEUR 
WHERE FLAG ='N'
est ce bon ??

a+ gilles
gilles974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h03   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Avec ta requête, tu vas avoir tous les randonneurs dont le FLAG est à 'N'.

Si tu ne veux que ceux dont la colonne LE date de moins d'un mois, il faut ajouter la condition dans le WHERE :
Code :
1
2
3
4
SELECT ID_RANDONNEUR, NOM_PRENOM, EMAIL, LE
FROM RANDONNEUR 
WHERE FLAG ='N'
    AND LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 15h53   #5
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 37
Points : 37
merci cinefil mais ca reviens au même qu'à ma requet de départ

requete de départ
Code :
1
2
3
4
5
 
SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE 
FROM RANDONNEUR 
WHERE LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY) 
AND FLAG ='N'
ta requet
Code :
1
2
3
4
5
 
SELECT ID_RANDONNEUR, NOM_PRENOM, EMAIL, LE
FROM RANDONNEUR 
WHERE FLAG ='N'
    AND LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
en faisant ca je n'obtient pas le ou les resultats escompte

a+ gilles
gilles974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 15h59   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 529
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 529
Points : 3 521
Points : 3 521
Citation:
Envoyé par gilles974 Voir le message
...la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.

...

LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
AND FLAG ='N'[/code]
Y-a comme une incohérence, ou, à tout le moins une ambigüité, entre l'objectif énoncé et la formulation de la requête.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 16h04   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par gilles974 Voir le message
merci cinefil mais ca reviens au même qu'à ma requet de départ
Effectivement, je n'avais pas regardé ta première requête mais seulement la dernière.

Citation:
en faisant ca je n'obtient pas le ou les resultats escompte
Alors donne un jeu de données et le résultat que tu attends avec une formulation sans ambiguïté du souhait.

Ma formulation était sans ambiguïté et si ta requête (et donc la mienne) donne le résultat que tu as mis dans ton premier message, rien ne me permet de penser que ce résultat est faux.

Désolé mais ça c'est moins clair :
Citation:
la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 16h39   #8
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 37
Points : 37
je vais essayer de faire clair et simple

j'ai un champ "LE" du type date qui correspond à la date d'enregistrement et qui est auformat "0000-00-00".

mon but est de tester tous les enregistrements qui ont le champs "FLAG" à "N" et verifier que
Citation:
la date du jour - la date du champs "LE" est = à 30 jours
exemple
un randonneurs s'est incrit le
Citation:
199 GENDRE Celine xxx@xxx.com 2010-11-19 N
ma requet qui se lancera le 2010-12-19 à 1h00 du matin, devra sélectionner le randonneur ci-dessus

voila j'espère avoir été clair

a+ gilles
gilles974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h19   #9
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Tu viens d'écrire ceci :
Citation:
la date du jour - la date du champs "LE" est = à 30 jours
Avant tu avais écrit cela :
Citation:
si la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.
Tu vois la différence ?
Tu n'as donc qu'un signe à corriger dans la requête !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h48   #10
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 37
Points : 37
effectivement j'ai vu la différence en l'écrivant et j'ai modifier ma requet dans la foulée

j'attent le résultat de demain, je croise les doigts

a+ gilles
gilles974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h55.


 
 
 
 
Partenaires

Hébergement Web