Voila je suis coincé dans mon développement, je cherche à addition des valeurs directement dans une requête (sur plusieurs tables) et je ne reçois pas ce que j'attends !
Voici mes tables utilisées
Code : Tout sélectionner
CREATE TABLE IF NOT EXISTS `#__classement` (
`id` INT NOT NULL AUTO_INCREMENT,
`course_id` INT(11) NOT NULL,
`dossard` SMALLINT(5) NOT NULL,
`temps` TIME NOT NULL,
`place` INT(11) NOT NULL,
`moyenne` time NOT NULL,
`vitesse` decimal (4,3) NOT NULL,
`point` int (11),
PRIMARY KEY(`id`)
) TYPE=MyISAM;
CREATE TABLE IF NOT EXISTS `#__classement_course` (
`id` INT NOT NULL AUTO_INCREMENT,
`course` VARCHAR(45) NOT NULL,
`date` DATE NOT NULL,
`pat_chal` ENUM ('C','P','H') NOT NULL,
`lieu` VARCHAR(45) NOT NULL,
`kilometrage` FLOAT(5,3) NOT NULL,
`nbre_part` INT(11) NOT NULL,
`epreuve_id` INT(11) NOT NULL default '0',
PRIMARY KEY(`id`)
) TYPE=MyISAM;J'ai d'abord commencé par sélectionner toutes les courses
/////////// Les meilleurs courses challenge de l'année pour le coureur X /////////
$query = "SELECT clas.id as clas_id, clas.point, clas.course_id, clas.dossard, "
. "\n course.id, course.date as days, course.pat_chal"
. "\n FROM #__classement AS clas"
. "\n INNER JOIN #__classement_course AS course ON course.id = clas.course_id"
. "\n WHERE DATE_FORMAT(course.date,'%Y') = '2004' AND clas.dossard = '195' AND course.pat_chal = 'C'"
;
$database->setQuery( $query );
$challengelist = $database -> loadObjectList();
print_r($challengelist);
Ce qui me renvoie ce que j'attendais:
On voit là qu'il y a 3 courses et que lorsque l'on additionne les points (608, 577, 458) on obtient 1693 points ... pour cela en php, il n'y a pas de problème mais je dois impérativement faire cela en sql pour stocker dans un tableau array() !Array (
[0] => stdClass Object ( [clas_id] => 253 [point] => 608 [course_id] => 2 [dossard] => 195 [id] => 2 [days] => 2004-02-28 00:00:00 [pat_chal] => C )
[1] => stdClass Object ( [clas_id] => 2394 [point] => 577 [course_id] => 1 [dossard] => 195 [id] => 1 [days] => 2004-03-27 00:00:00 [pat_chal] => C )
[2] => stdClass Object ( [clas_id] => 4118 [point] => 458 [course_id] => 61 [dossard] => 195 [id] => 61 [days] => 2004-06-12 16:00:00 [pat_chal] => C ) )
Après recherche, il faut employer la fonction SUM(). Je travaille donc ma requête:
$query = "SELECT clas.id as clas_id, SUM(clas.point), clas.dossard, clas.course_id, "
. "\n course.id, course.date as days, course.pat_chal"
. "\n FROM #__classement AS clas"
. "\n INNER JOIN #__classement_course AS course ON course.id = clas.course_id"
. "\n WHERE DATE_FORMAT(course.date,'%Y') = '2004' AND clas.dossard = '195' AND course.pat_chal = 'C'"
. "\n GROUP BY clas.point"
;
$database->setQuery( $query );
$pointchal = $database -> loadResult();
print_r($challengelist);
Et là rien ne va plus ... j'ai un retour de
soit le clas_id du dernier enregistrement ... quelqu'un peut-il m'aider parce que là cela fait assez longtemps que je navigue en eaux profondes !4118
Merci