IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Tri des articles les mieux notés


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut Tri des articles les mieux notés
    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
    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 ;
    la table article
    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 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
    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
    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é.
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour, regardez du côté des jointure externe.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut
    Merci c'était sa voila ma nouvelle requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT articles. * , AVG( notes.note ) AS m
    FROM  `notes` 
    RIGHT JOIN articles ON notes.article_id = articles.id
    GROUP BY notes.article_id
    ORDER BY m DESC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/05/2015, 16h26
  2. Réponses: 13
    Dernier message: 05/05/2006, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo