Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sélectionner un select

Boucle sur des entrées

Anonyme
    9 septembre 2010 à 17:08:53

    Bonjour :)

    J'essaye de faire une requête assez compliquée (enfin elle me semble compliquée ^^).

    En gros pour l'exemple j'ai deux pétitions. Chaque jour, théoriquement, le nombre total de signatures de chaque pétition est inséré dans la base. Mais des bugs sont survenus et certains jours n'existent pas dans la table. Une image vaut mieux qu'un long discours :

    Image utilisateur

    J'aimerais récupérer le nombre de signatures pour un jour ou une période données. Par exemple :

    Comment récupérer le nombre de signatures entre le 03/09 et le 06/09 inclus ?
    Résultat (retour de la requête):
    petition1 | 17 (37-20) 20 correspond au 02/09 car 03/09 n'existe pas.
    petition2 | 9 (24-15) 24 correspond au 05/09 car 06/09 n'existe pas.

    Je n'ai aucune idée de comment faire ça :(

    Votre aide me serait très précieuse.
    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2010 à 18:30:58

      Tu veux les récupérer comment ? En additionnant le total de chaque pétition ? Ça se fait assez simplement avec BETWEEN :

      SELECT petition, SUM(signatures) AS TOTAL_SIGN
      FROM table_name
      WHERE date BETWEEN '2010-09-03' AND '2010-09-06'
      GROUP BY petition;
      
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        9 septembre 2010 à 19:04:06

        Merci pour ta réponse mais ce n'est pas ce que je cherche ;)

        En effet, between ne convient pas si il manque des entrées dans la table :(
        • Partager sur Facebook
        • Partager sur Twitter
          9 septembre 2010 à 19:18:06

          Pourquoi ? J'ai du mal à saisir le problème.
          • Partager sur Facebook
          • Partager sur Twitter
            9 septembre 2010 à 22:31:37

            Citation : Prosper_Le_Purineur

            Comment récupérer le nombre de signatures entre le 03/09 et le 06/09 inclus ?
            Résultat (retour de la requête):
            petition1 | 17 (37-20) 20 correspond au 02/09 car 03/09 n'existe pas.
            petition2 | 9 (24-15) 24 correspond au 05/09 car 06/09 n'existe pas.


            1) Si tu demandes du 3 au 6, il est complètement illogique de vouloir prendre la date du 02/09 simplement parce que le 03/09 n'existe pas.
            2) J'ai l'impression que tu cumules le nombre de signature au jour le jour. Ca aussi c'est très illogique, et tu te complexifies la tâche pour rien. Tu dois simplement mettre dans ta base le nombre de votes pour un jour donné. Comme ça quand tu veux savoir combien il y a eu de votes entre telle et telle date, tu utilise la requête que t'as donnée Fayden.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              10 septembre 2010 à 9:24:06

              Merci rotoclap. Le problème c'est qu'il s'agit d'une base de données existante (valeurs quotidiennes depuis 2005) et que si je veux la valeur d'une seule journée il me faut récupérer la valeur précédente pour la soustraire :/
              • Partager sur Facebook
              • Partager sur Twitter

              Sélectionner un select

              × 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