probleme de remplacement de l'operateur < par &lt;

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de remplacement de l'operateur < par &lt;

par Cyrano » 13 oct. 2006, 18:07

Effectivement et je ne l'avais pas vu non plus.

Autre point, et je te le recommande : pour ce qui me concerne, je teste systématiquement mes requêtes SQL en ligne de commande et non avec phpMyAdmin et en fin de compte je ne m'en porte pas plus mal.

par falgan » 13 oct. 2006, 13:33

bon alors voila je fais mon demi mea culpa
le probleme ne venait pas de mysql mais un peu de PHPMyAdmin et beaucoup de moi.

j'explique:

en lancant la requete sous PMA, j'avais une erreur a l'execution et en regardant la description de l'erreur et en verifiant la requete, j'ai observé la modification faite dans ma requête a savoir le fameux remplacement de "<" par "<" donc je suis parti en me focalisant pour savoir pourquoi il y avait modification

alors qu'en faite, l'erreur n'est pas la: regardez plus haut dans ma requete, j'ai d'un coté T1 et de l'autre t1 donc forcement...

Mais je doit dire pour ma défense que repéré cette erreur n'etait pas évident n'on plus étant donné que j'ai fait le test sous easyphp, sous mysql 5.0.24a et 5.0.26 en local (le tout sous windows) et tout fonctionnait
mais le serveur est sous linux et donc la casse prend encore plus d'importance apperement bien que le serveur mysql soit configuré pour y etre insensible

merci pour votre attention et oui je sais sur ce coup la je suis un boulet mais ce qui me rassure c'est que personne n'avait remaqué ma bourde.

par falgan » 13 oct. 2006, 11:18

Pour le serveur c'est une version 5.0.24a et pour easyPHP, la version de mysql est la 4.1.9

voila la requete complete

Code : Tout sélectionner

SELECT famille_article, SUM( Qté ) AS Qté FROM ( SELECT codArt, Taille, SUM( Qté ) AS Qté FROM ( SELECT n__facture AS num FROM factures_client WHERE TYPE = 'F' AND TO_DAYS(NOW()) - TO_DAYS(Date_D_Abr)<=180 ) AS t1 INNER JOIN ( SELECT N__facture AS num, Qté, Code_article AS codArt, Taille FROM lignes_factures_clients ) AS T2 ON T1.num = T2.num GROUP BY codArt, Taille ) AS T3 INNER JOIN ( SELECT Code_article AS codArt, Taille, Libelle_famille AS famille_article FROM articles ) AS T4 ON T3.codArt = T4.codArt AND T3.Taille = T4.Taille GROUP BY famille_article ORDER BY Qté DESC
en fait je prefere passer par des sous requetes afin de limiter le plus tot possible le nombre de lignes et de colonnes à croiser lors des jointures
sinon dans tous les cas la requête plante pour cause de depassement de temps limite d'execution.
Mais ce que je ne comprends pas c'est pourquoi mysql interprete mal le symbole "<" et le remplace par son equivalent "<" dans cette requete et sur le serveur alors qu'autrement tout fonctionne parfaitement pour cet operateur (sur le serveur et localement) et que cette requete fonctionne aussi parfaitement localement
Donc la question serait plutot qu'est ce qui a changé dans la configuration de mysql entre les deux versions que j'utilise pour que ca marche sur l'ancienne et que ca plante sur la nouvelle

par Cyrano » 12 oct. 2006, 18:43

Quelle version de MySQL : il ne faut pas oublier qu'avant la version 4.1, les sous-requêtes ne sont pas supportées. Et dans ce cas il te faut envisager une jointure pour obtenir le même résultat et ce sera en outre moins gourmand en ressources.

Accessoirement, mets-nous la structure des tables concernées, si possible un petit jeu d'essai et décris ce que tu veux obtenir.

probleme de remplacement de l'operateur < par &lt;

par falgan » 12 oct. 2006, 16:22

Merci déjà d'etre là a lire mon probleme et merci à Zeus de m'avoir diriger vers votre forum

Alors voila, j'ai une base de données MySQL sur laquelle je fait une requête peu complexe contenant des sous requêtes
Voici l'une de celles ci:

Code : Tout sélectionner

SELECT champs1 AS num FROM table1 WHERE TO_DAYS(NOW()) - TO_DAYS(Date_D_Abr)<=180
mon problème c'est que:
-toute seule cette requête marche parfaitement (en local ou sur le serveur)
-dans sa requête mère en local sous easyPHP ca marche également
-dans sa requête mère mais cette fois sur le serveur distant du site, elle plante magistralement et lorsque je lance la requête mère directement sur l'interface PHPMyAdmin, il me retourne une erreur (qui n'a rien a voir mais qui découle de mon probleme) et la visualisation de la requête me retourne cela

Code : Tout sélectionner

SELECT champs1 AS num FROM table1 WHERE TO_DAYS(NOW()) - TO_DAYS(Date_D_Abr) < =180
en resumé, je dois avoir un probleme dans la configuration du serveur, qui me remplace cet opérateur par < (idem avec ">") mais seulement dans le cas de cette requete

voila voila

merci d'avance de vos réponses