Problème pour mettre de l'ordre dans ma requête !

Mammouth du PHP | 545 Messages

19 juin 2008, 18:03

Bonjour,

Le titre résume assez ce qu'il m'arrive ... je n'arrive pas à ordonner !
Voici ma requête:

Code : Tout sélectionner

$query = "SELECT clas.id, clas.course_id, clas.dossard as dossard_course, clas.temps, clas.place, clas.moyenne, clas.vitesse, clas.pos_cat, " . "\n chang.id, chang.participant_id, chang.annee, chang.dossard, chang.categorie_id, " . "\n part.id AS part_id, part.nom, part.prenom, " . "\n course.id, DATE_FORMAT(course.date,'%Y') AS years, course.published, " . "\n cat.id, cat.sexe, cat.lastname" . "\n FROM #__classement AS clas" . "\n INNER JOIN #__classement_chang AS chang ON chang.dossard = clas.dossard AND chang.annee = DATE_FORMAT(course.date,'%Y')" . "\n INNER JOIN #__classement_participant AS part ON part.id = chang.participant_id" . "\n INNER JOIN #__classement_course AS course ON course.id = clas.course_id" . "\n INNER JOIN #__classement_cat AS cat ON cat.id = chang.categorie_id" . "\n WHERE course.epreuve_id = '" . (int)$id . "' AND cat.sexe = '" . $sexe ."'" //. "\n ORDER BY clas.vitesse ASC" . "\n LIMIT $nbre" ;
Quand j'ajoute la ligne 'ORDER BY clas.vitesse ASC', j'ai cette erreur qui s'affiche:
DB function failed with error number 1053
Server shutdown in progress SQL=SELECT clas.id, clas.course_id, clas.dossard as dossard_course, clas.temps, clas.place, clas.moyenne, clas.vitesse, clas.pos_cat, chang.id, chang.participant_id, chang.annee, chang.dossard, chang.categorie_id, part.id AS part_id, part.nom, part.prenom, course.id, DATE_FORMAT(course.date,'%Y') AS years, course.published, cat.id, cat.sexe, cat.lastname FROM jos_classement AS clas INNER JOIN jos_classement_chang AS chang ON chang.dossard = clas.dossard AND chang.annee = DATE_FORMAT(course.date,'%Y') INNER JOIN jos_classement_participant AS part ON part.id = chang.participant_id INNER JOIN jos_classement_course AS course ON course.id = clas.course_id INNER JOIN jos_classement_cat AS cat ON cat.id = chang.categorie_id WHERE course.epreuve_id = '5' AND cat.sexe = 'F' ORDER BY clas.vitesse ASC LIMIT 10
J'ai bien vérifier que tous les champs étaient existant ... est-ce que quelqu'un sait ce qui se passe ?

Merci

NB: Voici le schéma de la table où le champs concerné déconne:
CREATE TABLE IF NOT EXISTS `jos_classement` (
`id` int(11) NOT NULL auto_increment,
`course_id` smallint(5) NOT NULL default '0',
`dossard` smallint(5) NOT NULL default '0',
`temps` time NOT NULL default '00:00:00',
`place` smallint(5) NOT NULL default '0',
`pos_cat` smallint(5) NOT NULL default '0',
`moyenne` time NOT NULL default '00:00:00',
`vitesse` decimal(5,3) NOT NULL default '0.000',
`point` int(11) default NULL,
PRIMARY KEY (`id`)
)
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Eléphant du PHP | 174 Messages

19 juin 2008, 20:38

Bonsoir.
Server shutdown in progress
D'après ce qui est dit, le serveur se déconnecte avant la fin de l'exécution de la requête.
Peut-être que le tri demande un temps de travail supplémentaire trop important.

Dans tous les cas je pense que la requête est trop lourde à l'envoi, peut-être faudrait-il l'optimiser...

bon courage.
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Mammouth du PHP | 545 Messages

19 juin 2008, 22:30

Merci pour ta réponse qui me désespéré un peu quand même !
Juste une question:
Comment se fait-il que d'un serveur à l'autre, la même requête fonctionne ou non ... à savoir qu'elle fonctionne chez OVH 60GP et pas chez OVH 1000 GP? Et que c'est seulement quand j'ajoute une fonction de tri que cela merdouille ?

Merci beaucoup
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

20 juin 2008, 06:47

Un détail peut-être : au lieu de DATE_FORMAT, tu pourrais utiliser YEAR(), ce qui donnerait

Code : Tout sélectionner

SELECT clas.id, clas.course_id, clas.dossard as dossard_course, clas.temps, clas.place, clas.moyenne, clas.vitesse, clas.pos_cat, chang.id, chang.participant_id, chang.annee, chang.dossard, chang.categorie_id, part.id AS part_id, part.nom, part.prenom, course.id, YEAR(course.date) AS years, course.published, cat.id, cat.sexe, cat.lastname FROM jos_classement AS clas INNER JOIN jos_classement_chang AS chang ON chang.dossard = clas.dossard AND chang.annee = YEAR(course.date) INNER JOIN jos_classement_participant AS part ON part.id = chang.participant_id INNER JOIN jos_classement_course AS course ON course.id = clas.course_id INNER JOIN jos_classement_cat AS cat ON cat.id = chang.categorie_id WHERE course.epreuve_id = 5 AND cat.sexe = 'F' ORDER BY clas.vitesse ASC LIMIT 10
Ça ne résoudra peut-être pas mais ce sera une simplification. Ensuite les quotes autour de la valeur de course.epreuve_id sont inutile, cette colonne doit contenir un entier et non une chaine de caractères. Pour le reste, je ne vois pas.

As-tu testé ta requête avec des valeurs en dur avant de l'intégrer dans ton PHP avec des variables ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

20 juin 2008, 08:44

Ça ne résoudra peut-être pas mais ce sera une simplification. Ensuite les quotes autour de la valeur de course.epreuve_id sont inutile, cette colonne doit contenir un entier et non une chaine de caractères.
Effectivement, j'ai tendance à compliquer un peu l'histoire (c'est peut-être à cause que l'on peut encore me mettre dans la case débutant :roll:) mais je me soigne et j'ai déjà fait quelques modifications sur la requête en enlevant du SELECT les champs que je n'utilisais pas à l'affichage ainsi que les quotes. Par contre, je n'avais pas imaginé ta 1er proposition ce qui simplifie encore ma requête mais ne résout pas encore mon problème !
As-tu testé ta requête avec des valeurs en dur avant de l'intégrer dans ton PHP avec des variables ?
Maintenant si et c'est assez surprenant car les réponses sur le 60GP et sur le 1000GP sont bien différentes ! J'ai envoyé ceci dans les 2 serveurs Mysql:

Code : Tout sélectionner

SELECT clas.id, clas.course_id, clas.dossard, clas.temps, clas.place, clas.moyenne, clas.pos_cat, chang.id, chang.participant_id, chang.annee, chang.dossard, chang.categorie_id, part.id, part.nom, part.prenom, course.id, course.published, cat.id, cat.sexe, cat.lastname FROM `jos_classement` AS `clas` INNER JOIN `jos_classement_chang` AS `chang` ON chang.dossard = clas.dossard AND chang.annee = YEAR(course.date) INNER JOIN `jos_classement_participant` AS `part` ON part.id = chang.participant_id INNER JOIN `jos_classement_course` AS `course` ON course.id = clas.course_id INNER JOIN `jos_classement_cat` AS `cat` ON cat.id = chang.categorie_id WHERE course.epreuve_id = 5 AND cat.sexe = 'F' ORDER BY clas.moyenne ASC LIMIT 10
Retour 60GP
Affichage des enregistrements 0 - 9 (10 total, Traitement en 0.6262 sec.)
Je vous fais grâce des détails qui sont les champs que j'attendais !
Retour 1000GP
requête SQL: Modifier

SHOW TABLE STATUS LIKE 'jos_classement';

MySQL a répondu:Documentation
#2006 - MySQL server has gone away
J'ai lancé le fameux statut et :
Name Type Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Create_options Comment
jos_classement MyISAM Fixed 72216 30 2166480 128849018879 605184 0 72218 2008-06-16 12:24:48 2008-06-19 13:38:22 2008-06-18 00:17:24
Là je comprends rien :roll:

J'ai envoyé un mail hier à OVH pour m'enlever un doute:
concerne: mut.1000gp

Bonjour,



J'aimerai vous poser une question par rapport à une requete qui ne peut afficher de résultat sur le 1000gp :

DB function failed with error number 1053

Server shutdown in progress SQL=SELECT clas.id .....

C'est assez étonnant car avant que je ne réinstalle tout mon site elle fonctionnait très bien et que cette même requête fonctionne encore très bien sur un autre serveur que j'ai chez vous (60gp) !

En faite, je cherche déjà depuis quelques jours et je voulais savoir s'il n'était pas possible que l'erreur provienne du serveur lui-même ... j'aurai peut-être fait une fausse manœuvre ou dieu sait quoi d'autre !



Si vous pouviez m'aider et, au pire, m'enlever se doute et ainsi me permettre de chercher au bon endroit, je vous serais reconnaissant.



D'avance merci
On verra bien !

Voilà je finis ce long post et merci pour votre soutien à tous :shock:
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Invité
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 17:47

Re,

J'ai une réponse de la Hotline d'OVH et je dois dire que cela me laisse fortement pensif :
Bonjour,

Vous avez la possibilite de consulte les logs de votre site sur logs.ovh.net/kain-bruyere.be Cela devrait vous aider dans votre expertise.

Cordialement
Merci à eux mais moi, le néophyte, qu'est-ce que je fais de cela ... ! ? !

Merci