X-K4l1 Posté(e) le 27 juillet 2006 Partager Posté(e) le 27 juillet 2006 Bonjour, J'ai sur mon pc d'installer phpMyAdmin 2.6.1 et lorsque j'execute : SELECT * FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 AND lan_temps IN ( SELECT MAX( lan_temps ) FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 ) Ca marche tres bien mais des que je l'execute sur le serveur phpmyadmin de mon hebergeur qui est en version phpMyAdmin 2.4.0 ça me retourne : Erreur requête SQL : SELECT * FROM fusion_lan WHERE lan_temps < 0 AND lan_avenir = 1 AND lan_temps IN ( SELECT MAX( lan_temps ) FROM fusion_lan WHERE lan_temps < 0 AND lan_avenir = 1 ) MySQL a répondu: Erreur de syntaxe près de 'SELECT MAX( lan_temps ) FROM fusion_lan WHERE lan_temps < 0 AND' à la ligne 1 Quelqu'un a t'il une idée et une solution ? Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quarky Posté(e) le 27 juillet 2006 Partager Posté(e) le 27 juillet 2006 Pourquoi avoir mis des espaces avant et après "lan_temps" ? SQL: MAX Function Essaies sans. SELECT * FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 AND lan_temps IN ( SELECT MAX(lan_temps) FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
X-K4l1 Posté(e) le 27 juillet 2006 Auteur Partager Posté(e) le 27 juillet 2006 Que j'en mette ou nan ça change rien et puis il les rajoute tout seul les espaces. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 27 juillet 2006 Partager Posté(e) le 27 juillet 2006 PhpMyAdmin n'est pas la base de données mais un moyen d'y accéder. Il faudrait déjà comparer la version de la BDD que tu as chez, et celle de ton hébergeur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
X-K4l1 Posté(e) le 27 juillet 2006 Auteur Partager Posté(e) le 27 juillet 2006 Chez moi : MySQL 4.1.9-max Chez eux : MySQL 4.0.15-max-nt Lien vers le commentaire Partager sur d’autres sites More sharing options...
X-K4l1 Posté(e) le 27 juillet 2006 Auteur Partager Posté(e) le 27 juillet 2006 On vient de me dire que le problème vient de la requête imbriqué qui n'est géré car partir de la version 4.1 Et qu'il n'ya qu'un solution, sauvegarder le résultat intermèdiaire... mais comment ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 27 juillet 2006 Partager Posté(e) le 27 juillet 2006 Et pourquoi pas simplement : SELECT * FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 AND lan_temps = MAX(lan_temps) Lien vers le commentaire Partager sur d’autres sites More sharing options...
X-K4l1 Posté(e) le 27 juillet 2006 Auteur Partager Posté(e) le 27 juillet 2006 Et pourquoi pas simplement : SELECT * FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 AND lan_temps = MAX(lan_temps) Ca me donne comme erreur : Erreur requête SQL : SELECT * FROM fusion_lan WHERE lan_temps < 0 AND lan_avenir = 1 AND lan_temps = MAX( lan_temps ) MySQL a répondu: Utilisation invalide de la clause GROUP Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 28 juillet 2006 Partager Posté(e) le 28 juillet 2006 Ben j'ai halluciné, MAX c'est que pour les requêtes avec "GROUP BY" Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 10 août 2006 Partager Posté(e) le 10 août 2006 Chez moi : MySQL 4.1.9-max Chez eux : MySQL 4.0.15-max-nt effectivement le probleme vient bien des versions mysql de l'hébergeur qui ne gère pas les requetes imbriquées. la meilleur solution que j'ai trouvé, c'est de faire 2 requetes différentes qui évidemment demandera plus de temps. tu mets les résultats de ton select imbriquer dans un tableau et tu boucles pour avoir les résultats du 1er select. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Picon Posté(e) le 28 août 2006 Partager Posté(e) le 28 août 2006 Quelques infos qui pourraient t'être utile : OVH (100 balles que tu parles d'eux ) compte effectuer une migration vers MySQL 5.1 bientôt. A suivre donc... Utiliser MAX dans une clause WHERE est insensé puisque la valeur MAX ne peut être évaluée qu'après les conditions de "filtrage" du WHERE Une solution à ton problème : SELECT * FROM fusion_lan WHERE lan_temps <0 AND lan_avenir =1 ORDER BY lan_temps DESC LIMIT 1; Les résultats sont triés par lan_temps décroissant, ton premier résultat est donc celui qui t'intéresse (et autant limiter à 1 résultat...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quarky Posté(e) le 29 août 2006 Partager Posté(e) le 29 août 2006 Picon merci d'utiliser les balises "code" pour une meilleure lisibilité de ton message ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.