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)
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
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 ;
Ce que je cherche a faire c'est :
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;
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 :
Si quelqu'un pouvais me filer un petit coup de main la dessus, ce serait extremement sympathique de sa part...
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)
Merci d'avance
@+
Cadou
PS : Un ou deux liens avec de bonnes explications sur ce type de probleme serait egalement les bienvenues :-)
Partager