Bonjour, je voudrais trier les articles des mieux notés au moins bien notés, mais j'ai un soucis au niveau du résultat.
voila mes 2 tables
la table note
la table article
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE IF NOT EXISTS `notes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `note` int(11) NOT NULL, `user_id` int(11) NOT NULL, `article_id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
et voila la requête que j'effectue pour trier les articles les mieux noté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE IF NOT EXISTS `articles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titre` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `body` text NOT NULL, `vue` bigint(20) NOT NULL, `enable` tinyint(1) NOT NULL, `fav` bigint(20) NOT NULL, `thumbnail` varchar(255) NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Et la il m'affiche que 3 articles (dans le bon ordre de tri) alors qu'il y a un 4ème qui n'est pas noté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT articles.* , AVG( notes.note ) AS m FROM `notes` INNER JOIN articles ON notes.article_id = articles.id GROUP BY notes.article_id ORDER BY m DESC
Suis-je obligé de lui attribué une note par défaut (ce que je veux pas) ou il y a une autre méthode ?
Merci pour vos réponse.
Partager