Bonjour,

J'ai l'habitude de tester tout ce qu'il est possible sur une requete avant de trouver ou de m'avouer vaincu... Et j'ai beaucoup de mal a m'y retrouver entre les SUM, les COUNT et les GROUP... Surtout quand il y a des jointures.

En gros, j'ai un systeme qui comptabilise des points par journées. Les journées sont stockées dans la table des matchs.

Pour une journée donnée, je peux avoir jusqu'a 10 matchs. Le total de points reflete le score total sur les 10 matchs.

Voici comment se présente la table match (je vous ai retiré ce qui ne sers pas pour eviter de vous perdre)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
CREATE TABLE IF NOT EXISTS `matchs` (
  `id` int(11) NOT NULL auto_increment,
  `id_compet` int(11) NOT NULL,
  `id_day` tinyint(5) NOT NULL,
  `date_day` datetime NOT NULL default '0000-00-00 00:00:00',
  `statut` char(48) NOT NULL default '0',
  `updated` datetime NOT NULL,
  `plot` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Et voici la table des résultats. Il y a une ligne par competition et par journées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
CREATE TABLE IF NOT EXISTS `results` (
  `title` varchar(255) NOT NULL,
  `groupname` varchar(255) NOT NULL,
  `id_compet` int(11) NOT NULL,
  `id_day` int(11) NOT NULL,
  `points` int(11) NOT NULL,
  PRIMARY KEY  (`title`,`id_compet`,`id_day`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ce que je cherche a faire c'est :
1 : Le total des points pour une equipe (results.groupname) par numero de semaine
2 : Le total des points pour une equipe (results.groupname) et pour une competition données (results.id_compet) par numéro de semaine.

Avec ces suites, je cherche a faire des graphiques (mais ca je maitrise).

J'ai éssayé des tas de choses, mais les totaux sont toujours fantaisistes.
Voici ou mes reflexions se sont arrétées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
SELECT results.title, WEEK(matchs.date_day), SUM(results.points)
FROM results
LEFT JOIN matchs ON matchs.id_day = results.id_day AND matchs.id_compet = results.id_compet
GROUP BY results.title, WEEK(matchs.date_day)
Si quelqu'un pouvais me filer un petit coup de main la dessus, ce serait extremement sympathique de sa part...

Merci d'avance
@+
Cadou
PS : Un ou deux liens avec de bonnes explications sur ce type de probleme serait egalement les bienvenues :-)