[SQL] 'Like' trop large!

Résolu
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!!

2 réponses

  1. Contributeur
    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
    1. 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
  2. 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
    1. 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
    2. @macgawelRéponse très simple en effet!
      Je n'y avais meme pas pensé -_-

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