par
jpfil » 15 mars 2005, 17:10
Merci de vos réponses.
La requête "SELECT * FROM vols WHERE circuit LIKE '%CRSL%' ORDER BY circuit;" est exactement celle que j'avais codée en premier, mais les résultats ne s'affichaient pas en ordre CRSL01, CRSL02, CRSL03 etc. Je persiste à croire que c'est parce que le champ 'circuit 'de certains vols CRSL débute par CRIM04, CRIM02 etc. (puisqu'ils sont également compris dans d'autres circuits) et que cela interfère sur l'ordre de classement puisque CRIM04 arrive devant CRSL01. Tout fonctionnerait sans problème si le champs ne contenaient que les valeurs de type CRSLxx mais voilà, il contient aussi des valeurs de type différents (CRIMxx, CRLGxx etc.).
Cela tend à appuyer le fait que la requête retire le contenu de TOUT le champ, et non seulement la valeur visée par LIKE, ce qui signifie dans notre cas que, avec l'opérateur LIKE '%CRSL%%', le champ contenant 'CRIM04 CRSL01' retournera 'CRIM04 CRSL04' et non pas seulement 'CRSL01'.
J'ai trouvé un moyen "détourné" pour en arriver à mes fins, en utilisant une boucle PHP (FOR) qui retire, avec des requêtes MySql successives, les enregistrements contenant la valeur CRSL01, puis CRSL02, puis CRSL03 etc., en plaçant le résultat dans un tableau. Celui-ci est affiché dans la page en utilisant une même boucle FOR. Cela fonctionne très bien mais on achemine alors une foule de "petites" requêtes au serveur plutôt qu'une "normale".
Merci de vos réponses.
La requête "SELECT * FROM vols WHERE circuit LIKE '%CRSL%' ORDER BY circuit;" est exactement celle que j'avais codée en premier, mais les résultats ne s'affichaient pas en ordre CRSL01, CRSL02, CRSL03 etc. Je persiste à croire que c'est parce que le champ 'circuit 'de certains vols CRSL débute par CRIM04, CRIM02 etc. (puisqu'ils sont également compris dans d'autres circuits) et que cela interfère sur l'ordre de classement puisque CRIM04 arrive devant CRSL01. Tout fonctionnerait sans problème si le champs ne contenaient que les valeurs de type CRSLxx mais voilà, il contient aussi des valeurs de type différents (CRIMxx, CRLGxx etc.).
Cela tend à appuyer le fait que la requête retire le contenu de TOUT le champ, et non seulement la valeur visée par LIKE, ce qui signifie dans notre cas que, avec l'opérateur LIKE '%CRSL%%', le champ contenant 'CRIM04 CRSL01' retournera 'CRIM04 CRSL04' et non pas seulement 'CRSL01'.
J'ai trouvé un moyen "détourné" pour en arriver à mes fins, en utilisant une boucle PHP (FOR) qui retire, avec des requêtes MySql successives, les enregistrements contenant la valeur CRSL01, puis CRSL02, puis CRSL03 etc., en plaçant le résultat dans un tableau. Celui-ci est affiché dans la page en utilisant une même boucle FOR. Cela fonctionne très bien mais on achemine alors une foule de "petites" requêtes au serveur plutôt qu'une "normale".