Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête avec count non concluante

Sujet résolu
    23 mai 2011 à 16:44:26

    Bonjour,

    J'ai une table "livre" comportant notamment comme champs : "id_livre" et date_publication. J'essaie de construire une requête permettant d'obtenir le nombre de livres groupés par année de publication. Mais la requête suivante n'est pas concluante :

    SELECT DISTINCT YEAR( L.DATE_PUBLICATION ) AS date_publication,
    COUNT( DISTINCT L.DATE_PUBLICATION ) AS stat_datepublication
    FROM LIVRE L
    GROUP BY L.DATE_PUBLICATION
    

    Toutes les années distinctes de publication sont bien retournées mais le count renvoie pour chacune d'entre-elle un résultat de 1, ce qui n'est pas conforme à la réalité. Comment corriger ma requête pour arriver à l'effet escompté ? Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2011 à 16:50:59

      Heu, je dis peut être une énorme anerie mais le COUNT ne devrait-il pas ce trouver directement le SELECT?

      Enfin dans mes cours, on fait comme ça après je sais pas...
      • Partager sur Facebook
      • Partager sur Twitter
      Si t'as pas d'amis, prends un curly, et si t'as pas de curly vas à Simply (Je sors >> [-] oui ceci est une porte)
        23 mai 2011 à 16:55:33

        Salut,

        @ Silverblack : le count est dans le select, y'a une virgule au bout de la ligne 1

        Sinon,
        C'est Group By sur le nouveau nom de champs que tu as donnée (le AS date_publication),
        GROUP BY date_publication

        Essaye ça :)
        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2011 à 16:59:10

          Oui oui j'avais vu la virgule mais je pensais qu'il fallait qu'il soit quand même en premier ^^
          • Partager sur Facebook
          • Partager sur Twitter
          Si t'as pas d'amis, prends un curly, et si t'as pas de curly vas à Simply (Je sors >> [-] oui ceci est une porte)
            23 mai 2011 à 17:16:39

            Merci pour vos réponses. Mais en rectifiant la requête comme cela :
            SELECT DISTINCT YEAR( L.DATE_PUBLICATION ) AS date_publication,
            COUNT( DISTINCT L.DATE_PUBLICATION ) AS stat_datepublication
            FROM LIVRE L
            GROUP BY date_publication
            


            Cela ne modifie en rien les résultats précédemment retournés...

            Voyez-vous ce qui ne va pas dans la requête ? Merci.
            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2011 à 20:40:57

              Vire le DISINCT à l'intérieur du COUNT.
              • Partager sur Facebook
              • Partager sur Twitter
                23 mai 2011 à 20:54:25

                Le fait d'enlever le DISTINCT n'aboutit pas au résultat voulu. J'ai désormais des années qui me sont retournées en doublon avec des valeurs de count différentes. Du style :

                date_publication, stat_datepublication
                1938, 5
                1938, 4
                1979, 3
                1979, 2

                Avez-vous d'autres pistes ? Merci
                • Partager sur Facebook
                • Partager sur Twitter
                  23 mai 2011 à 23:17:54

                  Les DISTINCT ne servent à rien (tous)
                  count(*) est plus adapté que COUNT( L.DATE_PUBLICATION ) puisque L.DATE_PUBLICATION n'est pas NULL...

                  Après, j'ai un doute : le date_publication dans le GROUP BY fait-il référence à l'alias ou à la colonne de la table ? Mieux vaut utiliser un alias avec un autre nom.

                  (Je viens de faire le test et MySQL est con : au lieu de donner une erreur comme "nom de colonne ambigü", GROUP BY date_publication équivaut à GROUP BY L.date_publication, autrement dit l'alias YEAR(...) AS date_publication est ignoré).

                  Solution :

                  SELECT YEAR( L.DATE_PUBLICATION ) AS annee_publication,
                  COUNT( * ) AS stat_datepublication
                  FROM LIVRE L
                  GROUP BY annee_publication
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mai 2011 à 10:59:21

                    Merci à tous les intervenants, particulièrement à Lord Casque Noir dont la requête répond parfaitement à ma problématique.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Requête avec count non concluante

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown