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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Resultats incoherent lors d'une reque sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Resultats incoherent lors d'une reque sql

n°2146811
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 14:18:51  profilanswer
 

Bonjour a tous.
 
Je suis un grand debutant en ce qui concerne php et en particulier sql.
Pour mon taf je suis en charge de creer une interface web pour la consultation de deux bases de donnees.  
J ai realiser sans trop de probleme l'acces a la premiere base de donnees.  
Voici le type d interface que j'ai :
http://s14.postimage.org/6vg21f74t/Screen_shot_2012_06_22_at_13_59_39.jpg
 
Jusque la pas de probleme. Toutes les requettes aboutissent au bons resultats.  
Voici un exemple de requette :

Code :
  1. The request was : select * from flydb where genotype LIKE '%dpp%' && genotype LIKE '%%' && genotype LIKE '%%' && Category LIKE '%' && Number LIKE '%'


 
 
 Du coup pour le deuxieme site je reprends le code du premier et adapte l'interface et la base de donnee.
http://s17.postimage.org/5d0p2zx7v/Screen_shot_2012_06_22_at_14_05_08.jpg
Mais la les requetes ne me donnent soit aucun resultat soit un resultat partiel. Mais de facon constante.
Par exemple dans la categorie "dev" dans ma base de donnee j'ai 68 entree correspondant a "rabbit" mais il ne m'en trouve systematiquement que 4.

Code :
  1. The request was : select * from ab where Antigen LIKE '%%' && dev LIKE '%Rabbit%' && label LIKE '%%' && Name LIKE '%'


 
 
Pour d'autre encore il ne me trouve rien.
Je pense a un probleme de syntaxe mais pas forcement. Quelqu'un a une suggestion ?
 


---------------
PSN : Luluberlu
mood
Publicité
Posté le 22-06-2012 à 14:18:51  profilanswer
 

n°2146814
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 14:24:09  profilanswer
 

Un autre probleme  que je viens de remarquer, dans phpmyadmin la requette :

Code :
  1. SELECT * FROM `ab` WHERE `dev` like 'rabbit'

ne me revoie que 67 resultats et pas 68. Je ne comprends pas viens le probleme.


---------------
PSN : Luluberlu
n°2146815
likesum41
Posté le 22-06-2012 à 14:25:27  profilanswer
 

bonjour !
 
Alors déjà enlève tout ce qui est de la forme "colonne LIKE '%%'".
ça ne sert pas et en plus, c'est du traitement inutile.
 
En SQL, "Rabbit" != "rabbit" il me semble que la casse est respectée. As-tu bien fait attention à ça?

n°2146819
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 14:43:26  profilanswer
 

Merci pour la reponse, mais j ai teste et je n ai pas de sensibilite a la casse.
 
Ensuite les "Like" servent pour les requetes avec criteres vides. Lorsqu il  y a rien ils ne sont pas consideres, mais lorsqu ils sont renseigner ca permet de faire un recherche plus precise.  
exemple :  

Code :
  1. The request was : select * from flydb where genotype LIKE '%gal4%' && genotype LIKE '%gfp%' && genotype LIKE '%%' && Category LIKE '%Mosaic' && Number LIKE '%'

me donne 9 resultats comportant tous  les mots gfp, gal4 dans la categorie mosaic.
Alors  que la requete :

Code :
  1. The request was : select * from flydb where genotype LIKE '%%' && genotype LIKE '%%' && genotype LIKE '%%' && Category LIKE '%Mosaic' && Number LIKE '%'


me donne tous les resultats (209) de la categorie mosaic.
 
Ce que je ne comprend pas c'est que ca marche tres bien dans un cas et pas dans l'autre. C'est super frustran :cry:   :D .


Message édité par VSV-M le 22-06-2012 à 14:43:43

---------------
PSN : Luluberlu
n°2146831
likesum41
Posté le 22-06-2012 à 15:42:04  profilanswer
 

Il ne sont pas considéré mais ils sont lus et testés. Donc perte de ressources (même si c'est infime), et en plus il me font mal aux yeux :D
 
genotype LIKE '%%' && genotype LIKE '%%' && genotype LIKE '%%'
 
3 fois la même chose pour rien ici. enlève les, c'est toujours mieux pour les gens qui te relisent.
 
Bref, essaie ça:
 
select * from ab where dev LIKE 'Rabbit'

n°2146834
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 16:08:59  profilanswer
 

Pour le rabbit manquant c'etait a cause d un espace a la fin d' une des occurences.
 
Pour les 3 genotype je les ai mis car comme veux avoir 3 champs de recherches differents dans la categorie genotype je penssai qu'a partir des 3 champs de recherches libre ils me fallait "additionnner" le resultat de chacun des trois termes.
Plus precisement en php ca donne ca :

Code :
  1. $requete= "select * from flydb where genotype LIKE '%$search_word%'
  2. &&  genotype LIKE '%$search_word2%'
  3. && genotype LIKE '%$search_word3%'
  4. && Category LIKE '%$search_cat'
  5. && Number LIKE '%$search_number' "


 
Pour ce qui est du probleme de fond
 

Code :
  1. The request was : select * from ab where Antigen LIKE '%%' && dev LIKE '%Rabbit%' && label LIKE '%%' && Name LIKE '%'


ne me donne toujours que 4 resultats alors que ce que tu me propose m'en donne 68...
C'est comme si la requete ne prenais pas en comptes les champs vide.
 
 
La base de donnee est un import d'un fichier excel. Le probleme pourrait il venir de la ?
 
 
Merci pour ton aide  :jap: Et desole pour les yeux  :D


Message édité par VSV-M le 22-06-2012 à 16:09:44

---------------
PSN : Luluberlu
n°2146835
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 16:11:35  profilanswer
 

Pour info voila la structure de la table :
http://s16.postimage.org/x8snbvgsx/Screen_shot_2012_06_22_at_16_09_42.jpg


---------------
PSN : Luluberlu
n°2146837
likesum41
Posté le 22-06-2012 à 16:24:15  profilanswer
 

Ha ba tu as trouvé la réponse tout seul mais tu ne l'as pas vu ^^

 

En faite les LIKE '%' ne prend pas les champs vides.

 

Je te conseille de faire des tests pour savoir quels champs l'utilisateur a rempli dans le formulaire et d'adapter ta requête sql par la suite.

 

EDIT: enfaite je corrige, il prend les champs vides, mais pas les champs nuls. C'est plus exacte comme ça !


Message édité par likesum41 le 22-06-2012 à 16:27:49
n°2146838
VSV-M
PSN : Luluberlu
Posté le 22-06-2012 à 16:30:06  profilanswer
 

C est ce que je viens de voir....
 
Tout les champs n etaient pas renseignes , et par defaut etaient null.
Du coup en mettant none a la place de null ca marche...Et comme dans le premier site aucun champs n etait vide je n avais pas ce probleme.
 
 
 
Merci pour ton aide  :jap:


---------------
PSN : Luluberlu
n°2147039
rufo
Pas me confondre avec Lycos!
Posté le 25-06-2012 à 14:34:45  profilanswer
 

le ET en SQL, c'est normalement AND et pas &&...
 
Pour le case sensitive, ça dépend de la collation utilisée sur le champ ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  Resultats incoherent lors d'une reque sql

 

Sujets relatifs
[ORACLE] Combinaison de deux résultats de requêtequestion sur requête de group
Graphics et Incompatilité des resultats d'une methode via/sans interfaCompter le nombre de résultats d'une requête
Fulltext renvoient des resultats bizarres...[PL/SQL] sortir les résultats d'UPDATE dans le SPOOL
[RESOLU] [BASH] recherche et mise en forme synthétique de résultatsSupprimer résultats d'un Userform vba
Sortir les résultats d'une requête de sa boucleCours de C "minimaliste en lignes, riche en résultats"
Plus de sujets relatifs à : Resultats incoherent lors d'une reque sql


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