Requêtes simples MySql

Requêtes simples MySql

Bonjour j'ai un tableau MySQL qui compte les visiteurs d'un site.
Composé de 4 champs : utilisateur, page, date, adresse IP
Userpierre, page1, 2006-06-09, 10.175.252.8
Userlaurent, page1, 2006-06-09 , 10.175.248.136
Usermichele, page2, 2006-06-09 172.19.108.23
...

J'aimerais faire plusieurs tableaux par type de page et après dans chaque tableau compter le nombre de fois qu'un utilisateur est venu dans le mois.
table Page1,
Utilisateur moisjanvier2011, moisfevrier... , moisjanvier2012
userpierre, 5 10 5
userpaul 2 1 5
...

Y-a-t'il une requête simple ?

7 réponses

  1. Bonjour,

    Ta requête serait de la manière suivante : Il faut compter le nombre de ligne par utilisateur et par page pour une durée donnée (début du mois jusqu'à la fin du mois).
    Je te laisse essayer un peu de ton côté et si tu n'y arrive pas, tu me montre ce que tu as fait et j'essayerai de t'aider.

    Cordialement.
    1. En cherchant une lisibilité dans le résultat, j'ai changé quelques trucs
      Résultat voulu
      Page, utilisateur, date (mois/année), AdditionVu
      page1 userpierre 01-2011 15
      page1 userjean 01-2011 9
      ...
      page1 userpierre 02-2011 10
      .....
      Page2 userjean 01-2011 4
      ...

      Je suis proche du résultat avec ma requete
      select ' tstjaction ', 'tstjuser', YEAR(tstjdate), month(tstjdate), sum(tstjaction)
      from tbstatjour
      WHERE tstjdate >= '2011-01-01'
      AND tstjdate <= '2012-02-29'
      group by ' tstjaction ', 'tstjuser', YEAR(tstjdate), month(tstjdate)

      J'ai un souci sur la date que j'affiche actuellement sur 2 colonnes
      1. Pour que tu obtienne la date sur une colonne, il faut que tu concataine les 2 colonnes concernant les dates : YEAR(tstjdate), month(tstjdate)
        Je te conseil d'aller voir vers la méthode CONCAT.
        1. Ok merci, j'ai utilisé la fonction CONCAT,
          Par contre j'ai mes dates au départ sous forme 2011-01-01, quand je fais CONCAT( (month(tstjdate),YEAR tstjdate)); j'ai en résultat 1/2011 et non 01/2011 .
          y-a-t'il un moyen de ce champ comme date (au pire transformer les 1 en Jan, etc... ?
          Parce qu'après je l'exporte en Excel.
          1. Bonjour,

            Désolé de répondre que maintenant.
            Pour résoudre ce problème tu peux essayer :
            DATE_FORMAT(CONCAT( (month(tstjdate),YEAR tstjdate)),%m/%Y)
            

            Je te laisse tester ça.

            Cordialement.
            1. j'ai un résultat bizarre
              avec la requête de départ
              select 'tstjaction','tstjuser', CONCAT( month(tstjdate), YEAR (tstjdate)) AS DATE, sum(tstjaction) from tbstatjour WHERE 'tstjuser' = "administrateur"
              AND tstjdate >= '2011-01-01' AND tstjdate <= '2012-02-29' AND 'tstjaction' = '1'
              group by 'tstjaction','tstjuser', YEAR(tstjdate), month(tstjdate)
              j'ai le résultat
              tstjaction tstjuser DATE sum( tstjaction )
              1 administrateur 12011 2
              1 administrateur 22011 7
              1 administrateur 42011 2
              1 administrateur 72011 1
              1 administrateur 122011 3

              en utilisant DATE_FORMAT
              SELECT 'tstjaction' , 'tstjuser' , DATE_FORMAT( CONCAT( month( tstjdate ) , YEAR( tstjdate ) ) , '%m/%Y' ) AS DATE, sum( tstjaction ) FROM tbstatjour WHERE 'tstjuser' = "administrateur" AND tstjdate >= '2011-01-01' AND tstjdate <= '2012-02-29' AND 'tstjaction' = '1' GROUP BY 'tstjaction' , 'tstjuser' , YEAR( tstjdate ) , month( tstjdate )
              tstjaction tstjuser DATE sum( tstjaction )
              1 administrateur 01/2012 2
              1 administrateur 01/2022 7
              1 administrateur 01/2042 2
              1 administrateur 01/1972 1
              1 administrateur NULL 3

              une idée sur le problème du champ date (essayer avec %c ou %e idem),
              pourquoi il commence par prendre le champs année sur 2 chiffres ?
              1. Bonjour,

                Le problème doit provenir d'une mauvaise utilisation de la fonction DATE_FORMAT.
                Peut-être qu'en premier paramètre, la fonction à besoin d'une date entière dans un format spécifique.
                Je te laisse explorer le problème en ce sens.

                Cordialement.