Bonjour à Tous,
Voila mon problème :
j'ai une table avec des romans :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `liste_romans` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Titre` varchar(100) NOT NULL, `Auteur` varchar(50) NOT NULL, `Infos` varchar(100) NOT NULL, `Editeur` varchar(30) NOT NULL, `moyenne` smallint(6) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=153 ;
Pour chaque roman, il est possible d'y mettre une note, celle ci est rentrée ici meme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `gestion_critiques` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_roman` int(11) NOT NULL, `Pseudo` varchar(30) NOT NULL, `Date` date NOT NULL, `Note` tinyint(4) NOT NULL, `Commentaire` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=132 ;
Ce que je veux c'est, entre autre, afficher les romans avec la moyenne des notes .
Pour cela, avant je faisais mon traitement en PHP dans la boucle qui gérait mon tableau ...
mais ça c'était avant
Maintenant, j'ai créé une vue (j'ai découvert l'existence des vues )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vue_romans_moyenne` AS select `r`.`id` AS `id`,`r`.`Titre` AS `titre`,`r`.`Auteur` AS `auteur`,avg(`c`.`Note`) AS `moyenne`,`r`.`Infos` AS `infos`,`r`.`Editeur` AS `editeur` from (`liste_romans` `r` left join `gestion_critiques` `c` on((`r`.`id` = `c`.`id_roman`))) group by `r`.`Titre` order by avg(`c`.`Note`) desc;
Ce que je voudrai maintenant c'est, avec un trigger, mettre à jour cette vue, à chaque insertion ou modification de critique d'un roman.
CREATE TRIGGER after_insert_critiques AFTER INSERT ON gestion_critiques
et la il faudrait prendre toutes les notes de l'id roman avec NEW.id_roman,
en faire la moyenne et mettre à jour la vue
Mais je manque trop de pratique pour réaliser ce genre d'opération.
D'ou l'objet de mon post![]()
Partager