Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1705 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Résultats d'une requête incompréhensibles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Résultats d'une requête incompréhensibles

n°1952177
aideinfo
Posté le 21-12-2009 à 18:28:37  profilanswer
 

Bonjour,
Je rencontre un problème avec une requête SQL sous MySQL 5.
 
En testant le résultat dans PHPMyAdmin, j'obtiens la totalité de ma table avec cette req, ce qui est normal :  
 

Code :
  1. SELECT *
  2. FROM log_echecs_connexion
  3. WHERE dateheure
  4. BETWEEN (
  5. '2009-12-20 0:05:33'
  6. AND '2009-12-21 18:05:33'
  7. )
  8. AND `adr_ip` IS NOT NULL


 
Ce qui l'est moins, c'est quand je la modifie pour n'avoir que les données voulues. Elle ne retourne rien, alors que le critères changé (dernier champ adr_ip) contient bien la donnée de ma requête :  
 

Code :
  1. SELECT *
  2. FROM log_echecs_connexion
  3. WHERE dateheure
  4. BETWEEN (
  5. '2009-12-20 0:05:33'
  6. AND '2009-12-21 18:05:33'
  7. )
  8. AND `adr_ip` = 'xxxxxxx'


 
Je précise que dans le champ dateheure, toutes les données sont comprises dans l'intervalle de dates de ma requête.
 
Contenu de la table :  
  id_log     dateheure                   adr_ip          compte  
      1    2009-12-20 20:56:09   123.456.789.0    cpte1  
      2    2009-12-20 22:46:13   127.0.0.1          cpte1  


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
mood
Publicité
Posté le 21-12-2009 à 18:28:37  profilanswer
 

n°1952178
stealth35
Posté le 21-12-2009 à 18:32:17  profilanswer
 

si tu met LIKE au lieu de '=' ?


Message édité par stealth35 le 21-12-2009 à 18:32:29
n°1952181
aideinfo
Posté le 21-12-2009 à 19:07:25  profilanswer
 

Pas mieux, seul ou en ajoutant un % avant et après ma donnée. Et même en cherchant sur '%12%'. Par contre, avec SELECT * FROM log_echecs_connexion WHERE `adr_ip` = '127.0.0.1', ça m'affiche bien le résultat. C'est l'ajout de la date qui pose problème.


Message édité par aideinfo le 21-12-2009 à 19:09:01

---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°1952192
stealth35
Posté le 21-12-2009 à 19:40:13  profilanswer
 

et en utilisant DATE (ce qui serai plus propre)

 
Code :
  1. SELECT *
  2. FROM `log_echecs_connexion`
  3. WHERE `dateheure`BETWEEN (DATE('2009-12-20 0:05:33') AND DATE('2009-12-21 18:05:33')) AND `adr_ip` = 'xxxxxxx'


Message édité par stealth35 le 21-12-2009 à 19:41:06
n°1952201
aideinfo
Posté le 21-12-2009 à 19:49:53  profilanswer
 
n°1952300
kao98
...
Posté le 22-12-2009 à 10:25:48  profilanswer
 

Essaie

Code :
  1. WHERE adr_ip LIKE '217.0.0.1' AND dateheure BETWEEN '2009-12-20 0:05:33' AND '2009-12-21 18:05:33'


 
Je sais, ça peut paraître bizarre, mais j'ai déjà vu de drôles de trucs avec BETWEEN.
Tu peux essayer aussi de le remplacer par les classiques "dateheure <= 'xxx' AND dateheure >= 'xxx'", ne serait-ce que pour vérifier si c'est bien ça qui pose problème ou non.
 
Edit : il faut enlever les parenthèses en fait je crois.

Code :
  1. WHERE dateheure BETWEEN '2009-12-20 0:05:33' AND '2009-12-21 18:05:33' AND adr_ip LIKE '217.0.0.1'


Ouais, c'est bizarre. Le plus simple avec between, c'est de toujours le mettre en fin de WHERE et de ne jamais mettre de parenthèses pour éviter les comportements curieux.


Message édité par kao98 le 22-12-2009 à 10:29:00

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1952380
aideinfo
Posté le 22-12-2009 à 13:45:02  profilanswer
 

Merci kao98, ça marche effectivement comme ça.
 

Code :
  1. SELECT * FROM log_echecs_connexion WHERE adr_ip = '127.0.0.1'
  2. AND dateheure BETWEEN '2009-12-21 12:39:23' AND '2009-12-22 12:39:23'


 
Ce qui est bizarre, c'est qu'avant, sans paranthèse, ça me faisait des lost connection during query.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
n°1952701
MagicBuzz
Posté le 23-12-2009 à 10:54:01  profilanswer
 

hmmm et si dans la requête de départ tu vires les parenthèses qui servent à rien ?

 

parce que à la limite :

 

between (xx) and (yy) <= OK
(between xx and yy) <= ok

 

mais :

 

between (xx and yy) <= je vois pas ce que ça veut dire !

 

ça m'étonne donc pas que mysql non plus ;)

 

la syntaxe de between, c'est sans parenthèse : between xx and yy


Message édité par MagicBuzz le 23-12-2009 à 10:54:27

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Résultats d'une requête incompréhensibles

 

Sujets relatifs
[Acc 2000] Requete ok mais recordset vide[Access] Requete "imbriquée"
[Resolu] Requête SQL utra-looooongue...INSERT avec sous requete
probleme affichage suite a une requeteRequête double en MySQL
Problème requête ACCESSprobleme requete imbriquée
Requete pour remplacer une partie de chaine via Myadmin 
Plus de sujets relatifs à : Résultats d'une requête incompréhensibles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR