[SQL] 'Like' trop large!

Résolu
Leskate Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   -  
Leskate Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

comment pourrais restreindre les recherches effectuer par ma requete :
"select id_matiere from $nomtable where ids_eleves like '%$id%' And (Date>='$du' and Date<='$au') ";


Dans la base, j'ai, dans le champs ids_eleves, des information du genre "069.005.104", qui représente une série d'identifiant.
Cependant, lorsque je recherche les matière suivies par l'étudiant '9', je récupère aussi ceux de tous les autres étudiants ayant un '9' dans le id.

Il faudrait donc dire au "Like", qu'avant l'id recherché, il ne peut y avoir que '.00', '.0' ou '.' (précédé d'autre id) et après, il ne peut y avoir que '.' (suivie d'autre id).

Y a-t-il un moyen de faire cela simplement?
Merci d'avance!!
A voir également:

2 réponses

Ricky38 Messages postés 4349 Date d'inscription   Statut Contributeur Dernière intervention   1 462
 
bonjour :)

tu as essayé ceci :

"select id_matiere from $nomtable where ids_eleves like '$id' And (Date>='$du' and Date<='$au') ";


Juste enlever les % autour de id car ça lui dit tout ce qu'il y a devant id et tout ce qu'il y a après
0
Leskate Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   8
 
Je veux bien mais... si je lui demande LIKE '$id'.
Si mon id est 13 et que dans ma liste j'ai 056.013.096, il ne me renvois pas le tuple !

Ca ne marche pas en gros...
0
Leskate Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   8
 
J'ai résolu partiellement le probleme :
"select Distinct id_matiere from $nomtable 
							where 
							(
							ids_eleves like '00$id.%' 
							or ids_eleves like '0$id.%' 
							or ids_eleves like '$id.%' 
							or ids_eleves like '%.00$id' 
							or ids_eleves like '%.0$id' 
							or ids_eleves like '%.$id' 
							or ids_eleves like '%.$id.%' 
							or ids_eleves like '%.0$id.%' 
							or ids_eleves like '%.00$id.%' 
							or ids_eleves like '$id' 
							or ids_eleves like '0$id' 
							or ids_eleves like '00$id' 
							)
							And (Date>='$du' and Date<='$au') ";


Mais c'est on ne peux plus modulable et compréhensible :\
Enfin bon.. ca marche -_-

Je ne met pas 'Résolu', au cas ou vous auriez une meilleur solution a me proposer.
0
macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.

Ton "ids_eleves", il a un format défini ?
Genre, c'est une suite d'ID sur trois caractères séparés par des points ?
Dans l'affirmative, c'est relativement simple : tu prends $id, tu le complète avec des "0" devant pour arriver à trois caractères et tu fais un like '%$id_complete%'
0
Leskate Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   8 > macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention  
 
Réponse très simple en effet!
Je n'y avais meme pas pensé -_-

Merci a toi! Problème résolu :D
0