Requêtes simples MySql

Fermé
arrakis75 Messages postés 101 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 22 août 2024 - 8 mars 2012 à 13:32
loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 - 13 mars 2012 à 11:39
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

loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 53
13 mars 2012 à 11:39
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.

1
loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 53
8 mars 2012 à 14:09
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.
0
arrakis75 Messages postés 101 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 22 août 2024
8 mars 2012 à 20:21
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
0
loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 53
8 mars 2012 à 21:46
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arrakis75 Messages postés 101 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 22 août 2024
11 mars 2012 à 12:06
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.
0
loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 53
12 mars 2012 à 10:22
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.
0
arrakis75 Messages postés 101 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 22 août 2024
12 mars 2012 à 16:56
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 ?
0