Resultats incoherent lors d'une reque sql - SQL/NoSQL - Programmation
Marsh Posté le 22-06-2012 à 14:24:09
Un autre probleme que je viens de remarquer, dans phpmyadmin la requette :
Code :
|
ne me revoie que 67 resultats et pas 68. Je ne comprends pas viens le probleme.
Marsh Posté le 22-06-2012 à 14:25:27
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?
Marsh Posté le 22-06-2012 à 14:43:26
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 :
|
me donne 9 resultats comportant tous les mots gfp, gal4 dans la categorie mosaic.
Alors que la requete :
Code :
|
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 .
Marsh Posté le 22-06-2012 à 15:42:04
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
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'
Marsh Posté le 22-06-2012 à 16:08:59
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 :
|
Pour ce qui est du probleme de fond
Code :
|
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 Et desole pour les yeux
Marsh Posté le 22-06-2012 à 16:11:35
ReplyMarsh Posté le 22-06-2012 à 16:24:15
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 !
Marsh Posté le 22-06-2012 à 16:30:06
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
Marsh Posté le 25-06-2012 à 14:34:45
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
Marsh Posté le 22-06-2012 à 14:18:51
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 :
Jusque la pas de probleme. Toutes les requettes aboutissent au bons resultats.
Voici un exemple de requette :
Du coup pour le deuxieme site je reprends le code du premier et adapte l'interface et la base de donnee.
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.
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